swift - 将表中的自定义accessoryView更改为Swift 3中的不同accessoryView

标签 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

最佳答案

如文档中所述,当您设置单元格的 accessoryView 时,不会调用 accessoryButtonTappedForRowWith。仅当 accessoryType 设置为两种“公开”类型之一时才会调用它。

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

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

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

最后,在按钮处理程序中,更新给定行的数据状态,然后告诉 TableView 重新加载该索引路径的行。

关于swift - 将表中的自定义accessoryView更改为Swift 3中的不同accessoryView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49421400/

相关文章:

swift - 我想在 dequeueReusableCell 中获取 firestore 数据

swift - 在 Swift 4.2 的 future 版本中弃用 Spring 时出错

ios - SwiftUI 误导性错误 : 'Int' is not convertible to 'CGFloat'

ios - Swift 线程安全计数器变量?用于跟踪何时删除网络事件指示器

swift tableview如何选择所有行

iphone - UILabel 内的图像

ios - UITableViewCell 的内容 View 的 masksToBounds 属性不起作用

ios - 重叠文本问题 : iOS7

ios - 我们应该如何快速在谷歌地图上放置标记?

ios - 如何使用来自另一个 View Controller 的用户输入快速创建带有 TableView 单元格的列表