ios swift - 为什么我打开UISwitch并且其他UISwitch同时打开?

时间:2014-09-22 13:41:52

标签: ios uitableview uiswitch

我在自定义UITableViewCell中插入了一个UISwitch元素,我的UITable中有超过100个单元格。

它显示了多个UISwitch,我可以在UITable中点击哪个开启和关闭。

但我发现了一些奇怪的东西。

当我点击第一个UISwitch时,第13,26,38,51,...... UISwitch同时改变其状态。

无论它们是哪一部分,我都会更改一个UISwitch状态,另一个UISwitch会更改。

这些改变的UISwitch的间隔是11,12,11,12,11,12 ............元素。

我点击第13个UISwitch OFF,第1个,第26个,第38个,...... UISwitch变为OFF。

我尝试应用Segmented Control而不是UISwitch,我得到了这些元素的相同操作。

我在ViewController中编写这些代码。

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

        let cell : CardListCell = tableView.dequeueReusableCellWithIdentifier("RandomCardCell") as CardListCell
        var person = cardArray1[indexPath.item]
        cell.setCell(person.cardName, leaderName: person.leaderName, cardNo: person.cardNo, groupName: "")
        cell.countDelegate = self   
        //this is my delegate claimed in the Cell, and implemented in the View Controller 

        return cell
}

在我的单元格中,我创建了一个函数来设置自定义单元格的值。

func setCell(cardName: String, leaderName: String, cardNo: Int, groupName: String)
{
    self.cardNameLabel.text = cardName
    self.leaderNameLabel.text = leaderName
    self.cardNo = cardNo
    self.groupName = groupName
}

我现在没有在UISwitch行动中做任何事情。

 @IBAction func switchAction(sender: AnyObject) {

 }

设置自定义单元格时是否会遗漏任何内容?

我只想点击一个,只有一个UISwitch更改,而不是多个更改。

1 个答案:

答案 0 :(得分:0)

在从cellForRowAtIndexPath返回开关之前,您需要在单元格中打开或关闭开关。如果您只打开它然后使用tableView.dequeueReusableCellWithIdentifier返回的单元格,那么当您重新使用旧单元格时,您将获得缓存值。