установите / снимите флажок, коснувшись ячейки в табличном представлении и узнав, какая ячейка отмечена или не отмечена

я новичок в ios swift 2.2. Я попытался создать одно табличное представление с пользовательской ячейкой XIB. и я заполняю некоторые данные в моем табличном представлении. А также я добавил один пользовательский флажок. И я создаю отдельный класс для этой кнопки-флажка. Теперь, когда я нажимаю только на свою кнопку в моем customcell.xib. Но когда я нажимаю на свою ячейку, мой флажок не меняется. Мне нужно иметь оба. Когда я нажимаю на мою кнопку, она должна измениться, чтобы проверить и снять флажок с изображения. Когда я нажимаю на свою ячейку, мне нужно изменить кнопку, чтобы отметить или снять флажок

И когда я прокручиваю вниз и снова возвращаюсь наверх, мои отмеченные изображения автоматически изменяются на флажок normalcheck.

Мне нужно сделать какое-то действие, так что для этого. Когда я нажимаю на любую ячейку, мой флажок должен быть установлен и снят. И еще мне нужно знать, в какой ячейке строки проверено изображение. Так что я могу выполнить какое-то действие только для своей ячейки с проверенным изображением.

вот мой пользовательский флажок класса:

import UIKit

class CheckBoxButton: UIButton {

    // Images
    let checkedImage = UIImage(named: "CheckBoxChecked")! as UIImage
    let uncheckedImage = UIImage(named: "CheckBoxUnChecked")! as UIImage

    // Bool property
    var isChecked: Bool = false {
        didSet{
            if isChecked == true {
                self.setImage(checkedImage, forState: .Normal)
            } else {
                self.setImage(uncheckedImage, forState: .Normal)
            }
        }
    }

    override func awakeFromNib() {
        self.addTarget(self, action: #selector(CheckBoxButton.buttonClicked(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        self.isChecked = false
    }

    func buttonClicked(sender: UIButton) {
        if sender == self {
            if isChecked == true {
                isChecked = false
            } else {
                isChecked = true
            }
        }
    }

}

Класс Cutom cell.xib:

import UIKit

class FavCell: UITableViewCell {

    @IBOutlet weak var FLabel1: UILabel!
    @IBOutlet weak var FLabel2: UILabel!

    @IBOutlet weak var checkbox: CheckBoxButton!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }



    @IBAction func checkboxpress(sender: AnyObject) {
    }



}

мойviewcontroller.swift

import UIKit

class FavVC: UIViewController {

    @IBOutlet weak var FavTableView: UITableView!

    //var FData = [FavouritesData]()

    var arrDict :NSMutableArray=[]

    let cellSpacingHeight: CGFloat = 5  // cell spacing from each cell in table view

    override func viewDidLoad() {

        super.viewDidLoad()

        self.jsonParsingFromURL()

        let nib = UINib(nibName:"FavCell", bundle: nil)

        FavTableView.registerNib(nib, forCellReuseIdentifier: "FCell")

    }
// web services method
    func jsonParsingFromURL ()
    {
//        let token = NSUserDefaults.standardUserDefaults().valueForKey("access_token") as? String

        let url = NSURL(string: "som url")

        let session = NSURLSession.sharedSession()

        let request = NSURLRequest(URL: url!)

        let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
            // print("done, error: \(error)")

            if error == nil
            {

                dispatch_async(dispatch_get_main_queue())
                {
                    self.arrDict=(try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSMutableArray
                    if (self.arrDict.count>0)
                    {
                        self.FavTableView.reloadData()
                    }
                }

            }


        }
        dataTask.resume()
}
 func numberOfSectionsInTableView(tableView: UITableView) -> Int
    {
//        return self.FData.count
        return self.arrDict.count
    }


    // number of rows
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return 1
    }

    // height for each cell
    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
    {
        return cellSpacingHeight
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {

        let cell:FavCell = self.FavTableView.dequeueReusableCellWithIdentifier("FCell") as! FavCell
        cell.FLabel1.text=arrDict[indexPath.section] .valueForKey("favourite_name") as? String
        cell.FLabel2.text=arrDict[indexPath.section] .valueForKey("favourite_address") as? String
        return cell

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

пожалуйста, помогите мне.

заранее спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос