我有一个UITableView
的自定义单元格。当用户点击单元中的按钮时,用户必须从当前的ViewController1
导航到ViewController2
。我已经定义了自定义单元类中的按钮动作。但需要回电ViewController1
。快速关闭可以用于2级之间的通信吗?
我尝试使用closure类似于我们如何在目标C中使用块。它在同一类中使用时工作正常。但在两个不同的类中使用时会出错。
我有一个UITableView
的自定义单元格。当用户点击单元中的按钮时,用户必须从当前的ViewController1
导航到ViewController2
。我已经定义了自定义单元类中的按钮动作。但需要回电ViewController1
。快速关闭可以用于2级之间的通信吗?
我尝试使用closure类似于我们如何在目标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:
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
将被调用,您的控制器功能将与该用户进行。
我给你一个主意。
希望它有帮助
谢谢。因为我没有15点声望,所以我无法提升你的答案。 – ABM
@ABM如果有帮助,你可以接受。按寒鸦 –
发表你已经尝试过(一些代码)。有可能在2个VC之间通过关闭。 – Brduca
您需要使用协议。我将很快发布答案 –
是的,使用代表和协议或通知交替! – LinusGeffarth