我有一个UITableView的自定义单元格。当用户点击单元格中的按钮时,用户必须从当前ViewController1导航到ViewController2。我已经在自定义单元格类中定义了按钮操作。但需要回拨ViewController1
我尝试使用闭包,类似于我们在objective C中使用块的方式,在同一个类中使用时效果很好。但是在两个不同的类中使用时出现错误。

最佳答案

你需要在那里使用委托协议。
示例:当UserItem中发生某些事情时发送cell的协议:

protocol TappedUserDelegate: class {
    func userInfoTapped(_ tappedUser: UserItem?)
}

在您的controller中:
extension Controller: TappedUserDelegate {
    func userInfoTapped(_ user: UserItem?) {
        // user is tapped user in cell
    }
}

在您的tableView函数中:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // ........
    cell.delegateUserTaps = self // for user info taps to perform segue
    // ........
}

在您的定制中:
class CustomCell: UITableViewCell {
   weak var delegateUserTaps: TappedUserDelegate? // for sending user info

   // ........
   func userInfoTapped() {
       delegateUserTaps?.userInfoTapped(userItem) // <- send data to controller
   }
}

当调用cell时,控制器中的函数将与此用户一起执行。
我给了你一个主意。
希望有帮助

10-08 08:27