我在自定义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更改,而不是多个更改。
答案 0 :(得分:0)
在从cellForRowAtIndexPath
返回开关之前,您需要在单元格中打开或关闭开关。如果您只打开它然后使用tableView.dequeueReusableCellWithIdentifier
返回的单元格,那么当您重新使用旧单元格时,您将获得缓存值。