将表中的自定义accessoryView更改为Swift 3中的其他accessoryView

时间:2018-03-22 05:47:19

标签: swift uitableview

我还没有看到Swift 3解决方案,但我希望将自定义图像显示为表格附件(表格右侧的图标)。这部分有效。

但是,当点击此按钮/配件时,我需要将其更改为其他accessoryView以向用户表明已发生下载。

我已经设置了一种方法来做到这一点,但截至目前还没有发生任何变化。这是我的代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var imageView : UIImageView
    imageView  = UIImageView(frame:CGRect(x: 0, y: 0, width: 50, height: 50))
    imageView.image = UIImage(named:"downloadbutton.png")

    cell.accessoryView = imageView

    return cell
}

override func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {

    var imageView : UIImageView
    imageView  = UIImageView(frame:CGRect(x: 0, y: 0, width: 50, height: 50))
    imageView.image = UIImage(named:"downloaded.png")

    let cell = tableView.cellForRow(at: indexPath)
    cell?.accessoryView = imageView

}

是否有更好的方法可以确保在点击accessoryView时,它会转变为第二个accessoryView

1 个答案:

答案 0 :(得分:0)

如文档中所述,设置单元格accessoryButtonTappedForRowWith时不会调用accessoryView。只有在accessoryType设置为两种“披露”类型之一时才会调用它。

您需要将accessoryView设置为UIButton设置所需的图像。

您还需要在数据模型中保留状态信息,指明应显示哪两个图像。

然后更新cellForRow以根据该行的数据设置具有正确图像的按钮。

最后,在您的按钮处理程序中,更新给定行的数据的状态,然后告诉表视图重新加载该indexPath的行。