选择单元格时仅更改拇指背景颜色

时间:2015-01-08 07:55:21

标签: ios xcode swift

我有自定义的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中编写代码,或者我是否需要在单独的函数中编写代码?

3 个答案:

答案 0 :(得分:1)

好的,所以这就是你想要的:

  1. 没有突出显示,但是您的自定义更改(此处为图像的背景颜色)
  2. 多项选择,限制为4.如果更多,不允许选择,则用户必须手动取消选择。 (我有点不同意这种行为,我宁愿让最早的细胞自动取消选择)。
  3. 警告:我还不太了解,我在目标C中写这个,但我相信你可以解决这个问题。

    1. 很简单:cell.selectionStyle = UITableViewCellSelectionStyleNone;可以解决问题。你仍然可以玩细胞,但在视觉上没有任何反应。 (尽管所有代码仍然存在)

    2. 你需要一个数组或字典(我会去一本字典,因为它的性能更快)包含已经选择过的单元格的索引。如果你需要帮助,请寻求帮助。

    3. didSelectRowAtIndexPath中,每次选择时,首先:   - 检查单元格是否已经在您的选择字典中,如果是,请取消选择并将其从字典中删除。   - 如果没有,请检查字典的数量,如果它> 4,则不执行任何操作   - 如果没有,请将索引添加到字典中,更改颜色,并执行选择时所需的任何其他代码。

      如果你需要一些请求澄清,这只是逻辑,而不是代码。但我认为这是一个非常好的练习,至少可以尝试一段时间。 (我实际上不知道你的水平)

      在您的cellForRow方法中,您只需将当前单元格索引与字典/数组中的内容进行比较(如果需要,请寻求帮助),如果找到,只需将颜色更改为红色即可

      除非我忘记了什么,否则就是这样。代码和代码都非常轻巧。性能

答案 1 :(得分:0)

由于您希望用户能够单击四个不同的单元格并在单击之间保持状态,因此您可以将它们保存在数组或字典中。一种方法,取决于单元格将包含的内容,是为所有单击的单元格存储indexPath(可以在didSelectRowAtIndexPath中执行此操作),然后在cellForRowAtIndexPath中检查该indexPath是否在数组中或不,并根据这种情况相应地改变细胞。

didSelectRowAtIndexPath中,您还需要检查单击的单元格是否已存在于数组中,并且还需要检查数组中存在多少个对象(因为限制为4)。

如果我误解了这个问题,请发表评论!

答案 2 :(得分:0)

是的,您只能在didSelectRowAtIndexPath中更改缩略图的背景颜色,并将单元格的选择样式保持为“无”。