【问题标题】:How can i use dynamicType to do "perform(selector:)" in swift3我如何使用 dynamicType 在 swift3 中执行“执行(选择器:)”
【发布时间】:2018-01-14 08:54:51
【问题描述】:

在某些情况下:tableView 有不止一种类型的 UItableViewCell,并且这些单元格实现了函数“setData(_:)”。 所以,在

"tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell".     

我可以使用 "perfrom(selector:)" 避免“快速类型转换(如
if indexPath.row == 1{ cell as! SomeCoustomCell })". 但如果我使用 "#selector()" 我仍然需要知道细胞类型并使用 "SomeCoustomCell.setData(_:)". 因此,我通过使用解决了它 "cell.perform(Selector("setData:"), with: dataSource[indexPath.row]["data"])" 虽然它有一个警告。

swift中的正确方法是什么??

【问题讨论】:

    标签: ios uitableview dynamictype


    【解决方案1】:

    使用perfrom(selector:) 不是最好的方法。您可以使用协议。类似的东西

    protocol Configurable{
        func setData(_ data: String)
    }
    

    您的所有自定义 tableView 单元格都应符合此协议。然后在cellForRowAtIndexpath

    if cell is Configurable{
        cell.setData(data)
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多