【问题标题】:Adding Image to TableViewCell with Button Click in DetailVC Swift 4使用 Swift 4 中的按钮单击将图像添加到 UITableViewCell
【发布时间】:2018-09-03 15:21:53
【问题描述】:

我的 tableViewCell 将用户带到详细视图控制器。详细视图控制器上有一个收藏按钮,允许用户将条目添加为收藏。单击按钮时,我希望在条目对应的 tableViewCell 中放置一颗心。

我还没有弄清楚如何做到这一点。任何帮助表示赞赏!

【问题讨论】:

  • 您的favorite button 是否显示在每个单元格上? (是细胞的一部分)。或者最喜欢的按钮只有一个(是 Viewcontroller 的一部分)?
  • @AwaisFayyaz 收藏按钮只是 viewController 的一部分。但是,每个单元格中都有一个 imageView,这是我希望心脏显示的位置。
  • 是的,您可以使用委托或通知将值发送到前一个视图控制器。发生这种情况时,只需使用新值更新您的数据源(数组)并重新加载表格视图。

标签: ios swift4


【解决方案1】:

有两种解决方案可以实现您想要的,

  1. 使用委托:

    • 您可以在详细视图控制器中创建协议,并在列表 VC 中注册该协议的删除。 因此,当单击详细 VC 中的收藏夹按钮时,您可以使用特定项目的选定索引调用列表 VC,并更新详细 VC 中的单元格。 你可以参考这个网址:https://www.tutorialspoint.com/ios/ios_delegates.htm
  2. 使用 NSNotificationCenter(如上面给出的答案):

    • 在列表 VC 中注册通知并通过单击收藏按钮从详细 VC 发布通知(使用用户信息注册)

根据我的说法,如果您只想更新 1 个班级的信息,委托将是一个很好的解决方案。

【讨论】:

    【解决方案2】:

    这对 NSNotificationCenter 很有用。

    让单元侦听“didMakeFavorite”通知。按下收藏按钮时,让您的详细控制器发布通知。单元格和细节视图保持完全解耦;如果还有其他对象需要了解该事件,它们也可以将自己添加为观察者。

    在通知的userInfo 中包含类似项目 ID 的内容,以便单元格可以检查此通知是针对其项目还是其他单元格的(在这种情况下,此单元格不应再做任何事情)。

    【讨论】:

      【解决方案3】:

      我通过更改列表视图模型/模型的对象做了同样的事情,其他选项是通知和委托也可以工作。

       // make change in backScreen's CategoryListing Page from where user come here and tapped on wishlist
                  if let categoryViewModel = CategoryManager.shared.categoryViewModel, let product = (categoryViewModel.products.filter { $0.id == self.product.id })[safe: 0]{
                      product.isWishListed.value = isWishListed
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 2019-06-29
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 2018-11-20
        • 2023-03-15
        相关资源
        最近更新 更多