多个UITableViewCell受迭代按钮的影响,尽管只有一个被按下了?

时间:2016-12-31 11:25:02

标签: swift xcode

我将TableView设置为自定义单元类的迭代。每个单元格(在两个部分中都包含)包含一些标签和一个按钮。对于第二部分中的单元格,按钮文本以编程方式设置为“取消”,而第一部分中的按钮文本设置为不同的内容。我已经设置了按钮(对于button.title等于“取消”的单元格),一旦单击按钮,按如下方式缩小alpha值,使标签文本变灰:

@IBAction func mainPageCancelAction(_ sender: Any) {
        if mainPageCancelButton.title(for: .normal) == "x"{ //1st section cell
            mainPageCancelButton.setTitle("y", for: .normal)
        } else if mainPageCancelButton.title(for: .normal) == "y"{//1st section cell
            mainPageCancelButton.setTitle("x", for: .normal)
        } else if mainPageCancelButton.title(for: .normal) == "Cancel"//2nd section cell {
            mainPageUnattendCancelButton.setTitle("Canceled", for: .normal)
            NameLabel.alpha = 0.3
            CreatorLabel.alpha = 0.3
            TypeLabel.alpha = 0.3
        }
}

据我所知,此按钮应仅在第二部分中将标签灰显(通过降低Alpha值),其中按钮设置为“取消”。单击这些第二部分单元格中任何一个单元格中的按钮确实降低了该单元格的alpha值,但也随机地(我认为它的随机...)灰化了第一部分单元格的一些标签,即使它们不应该受到该操作的影响,因为它们不满足if Button.title(for: .normal) == "Cancel" if语句。他们的头衔是x和y。不知道为什么会这样。我认为基本的if语句尽管过于简单,但应该确保第1部分标签都没有受到alpha值变化的影响,因为它们的button.title永远不会是“取消”。不确定为什么会发生这种情况,特别是因为第二节细胞受到正确影响;只有按下按钮的单元格才会变灰。

1 个答案:

答案 0 :(得分:0)

按下按钮时,标签上的标签是否会立即变灰?或者只在滚动之后?

如果在滚动之后发生这个问题可能与重复使用单元格的事实有关。如果是这种情况,您应该确保将单元格的状态重置为合理的状态。一个好的地方是在你的细胞类中覆盖prepareForReuse()

override func prepareForReuse() {
    super.prepareForReuse()

    nameLabel.alpha = 1
    creatorLabel.alpha = 1
    typeLabel.alpha = 1
}