我有自定义的tableVew单元格,每个单元格都包含拇指和标签。当用户选择它时,我想改变拇指 - 拇指 - 背景颜色..用户最多可以选择4个单元格,然后他必须取消选择其中一个单元格以选择新单元格。
这里我制作了单元格
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = myTable.dequeueReusableCellWithIdentifier("intrest") as UITableViewCell
cell.textLabel?.text = InterstArr[indexPath.row]
var img = UIImageView(frame: CGRect(x: 10, y: 3, width: 40 , height: 40))
img.image = UIImage(named: "transparent.png")
cell.indentationLevel = 1
cell.indentationWidth = 45
cell.addSubview(img)
img.backgroundColor=UIColor.whiteColor()
var bgColorView = UIView()
bgColorView.backgroundColor = UIColor.clearColor()
cell.selectedBackgroundView = bgColorView
return cell
}
我是否必须在didSelectRowAtIndexPath
中编写代码,或者我是否需要在单独的函数中编写代码?
答案 0 :(得分:1)
好的,所以这就是你想要的:
警告:我还不太了解,我在目标C中写这个,但我相信你可以解决这个问题。
很简单:cell.selectionStyle = UITableViewCellSelectionStyleNone;
可以解决问题。你仍然可以玩细胞,但在视觉上没有任何反应。 (尽管所有代码仍然存在)
你需要一个数组或字典(我会去一本字典,因为它的性能更快)包含已经选择过的单元格的索引。如果你需要帮助,请寻求帮助。
在didSelectRowAtIndexPath
中,每次选择时,首先:
- 检查单元格是否已经在您的选择字典中,如果是,请取消选择并将其从字典中删除。
- 如果没有,请检查字典的数量,如果它> 4,则不执行任何操作
- 如果没有,请将索引添加到字典中,更改颜色,并执行选择时所需的任何其他代码。
如果你需要一些请求澄清,这只是逻辑,而不是代码。但我认为这是一个非常好的练习,至少可以尝试一段时间。 (我实际上不知道你的水平)
在您的cellForRow方法中,您只需将当前单元格索引与字典/数组中的内容进行比较(如果需要,请寻求帮助),如果找到,只需将颜色更改为红色即可
除非我忘记了什么,否则就是这样。代码和代码都非常轻巧。性能
答案 1 :(得分:0)
由于您希望用户能够单击四个不同的单元格并在单击之间保持状态,因此您可以将它们保存在数组或字典中。一种方法,取决于单元格将包含的内容,是为所有单击的单元格存储indexPath(可以在didSelectRowAtIndexPath
中执行此操作),然后在cellForRowAtIndexPath
中检查该indexPath是否在数组中或不,并根据这种情况相应地改变细胞。
在didSelectRowAtIndexPath
中,您还需要检查单击的单元格是否已存在于数组中,并且还需要检查数组中存在多少个对象(因为限制为4)。
如果我误解了这个问题,请发表评论!
答案 2 :(得分:0)
是的,您只能在didSelectRowAtIndexPath中更改缩略图的背景颜色,并将单元格的选择样式保持为“无”。