我有UITableView
的自定义单元格。当用户点击单元格中的按钮时,用户必须从当前ViewController1
导航到ViewController2
。我在自定义单元格类中定义了按钮操作。但是需要回拨ViewController1
。
我尝试使用闭包,类似于我们在目标C中使用块的方式。它在同一个类中使用时工作正常。但是在2个不同的类中使用时会出错。
答案 0 :(得分:1)
您需要在那里使用委托协议。
示例: 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:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// ........
cell.delegateUserTaps = self // for user info taps to perform segue
// ........
}
在自定义cell
中:
class CustomCell: UITableViewCell {
weak var delegateUserTaps: TappedUserDelegate? // for sending user info
// ........
func userInfoTapped() {
delegateUserTaps?.userInfoTapped(userItem) // <- send data to controller
}
}
当调用userInfoTapped
时,控制器中的功能将由该用户执行。
我已经给了你一个主意。
希望有所帮助