繁体   English   中英

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

[英]changing only thumb background color when a cell is selected

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

好的,这就是您想要的:

  1. 没有高亮显示,但是您的自定义更改了(此处是图像的背景色)
  2. 限制为4的多重选择。如果更多,不允许选择,则用户必须手动取消选择。 (我有点不同意这种行为,我宁愿让最早的单元格自动取消选择)。

警告 :我还不知道该怎么做,我正在用目标C编写此代码,但是我敢肯定您可以解决这个问题。

  1. 很简单: cell.selectionStyle = UITableViewCellSelectionStyleNone; 绝招。 您仍然可以与该单元格一起玩,但是在视觉上什么也没有发生。 (尽管所有代码仍在执行)

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

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

如果需要一些说明,这只是逻辑,而不是代码。 但我认为这是一个很好的练习,至少可以自己尝试一会儿。 (我实际上不知道你的水平)

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

除非我忘记了什么,否则就差不多了。 它在代码和性能上非常轻巧。

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

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

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

是的,您只能在didSelectRowAtIndexPath中更改缩略图的backgroundColor,并将单元格的选择样式保持为None。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM