SegmentControl дублирует галочки на UITableviewCell - PullRequest
0 голосов
/ 02 мая 2018

В основном я использую стручок M13Checkbox, который прекрасно работает, когда я не включаю свой UISegmentedControl. У меня есть два списка дел, разделенных на два сегмента. Как только я отмечаю флажок в первом сегменте, он повторяется во втором сегменте.

Я не уверен, что это из-за повторного использования клетки или нет. Используя инструкции print, которые я выяснил, я могу видеть данные indexpath.row независимо от того, какой сегмент отображается в данный момент. Только галочки, которыми я не могу управлять.

Пожалуйста, не обращайте внимания на любые "примечания Firebase".

class ToDoList: UITableViewController {
    @IBOutlet weak var segment: UISegmentedControl!

    var selectedRow: Int = 0

    let seg1 = ["first","tab","Index"]
    let seg2 = ["second","segment","akjdhfajd"]

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        var returnValue = 0

        switch(segment.selectedSegmentIndex) {
        case 0: returnValue = seg1.count
        case 1: returnValue = seg2.count
        default: break
        }

        return returnValue
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ToDoCell", for: indexPath) as! ToDoCell

        switch (segment.selectedSegmentIndex) {
        case 0:
            segment.selectedSegmentIndex = 0
            selectedRow = 0
            cell.item.text = seg1[indexPath.row]
            cell.box.tag = indexPath.row
        case 1:
            segment.selectedSegmentIndex = 1
            selectedRow = 1
            cell.item.text = seg2[indexPath.row]
            cell.box.tag = indexPath.row
            print(cell.box.tag)
        default:
            break
        }

        cell.box.addTarget(self, action: Selector(("checkboxPressed")), for: UIControlEvents.touchUpInside)
        return cell
    }

    @IBAction func checkboxPressed(_ sender: M13Checkbox) {
        let buttonRow = sender.tag
        let listItem = [buttonRow]
        let todoDict = ["\(buttonRow)": "True"]
        //need to individually checkbox the cases .. at moment if i check one it checks the other also

        if sender.checkState == .checked || sender.checkedValue == nil {
            print("\(buttonRow)")

            if selectedRow == 0 {
                let listArrayItem = seg1[buttonRow]
                sender.checkedValue = listArrayItem

                print(listArrayItem)
            } else {
                print("we are on segment 2")
            }
        } else if sender.checkState == .unchecked {
            // if its unchecked. then u want to remove it from the checked item in firebase.. we will only load checked items obviosuly..
            //remove from completed list
        }
    }
}
...