我有一个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
时,控制器中的函数将与此用户一起执行。我给了你一个主意。
希望有帮助