2017-06-08 36 views
1

我有一个UITableView的自定义单元格。当用户点击单元中的按钮时,用户必须从当前的ViewController1导航到ViewController2。我已经定义了自定义单元类中的按钮动作。但需要回电ViewController1快速关闭可以用于2级之间的通信吗?

我尝试使用closure类似于我们如何在目标C中使用块。它在同一类中使用时工作正常。但在两个不同的类中使用时会出错。

+0

发表你已经尝试过(一些代码)。有可能在2个VC之间通过关闭。 – Brduca

+0

您需要使用协议。我将很快发布答案 –

+0

是的,使用代表和协议或通知交替! – LinusGeffarth

回答

0

您需要在那里使用委托协议。

例子:协议发送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将被调用,您的控制器功能将与该用户进行。

我给你一个主意。

希望它有帮助

+0

谢谢。因为我没有15点声望,所以我无法提升你的答案。 – ABM

+0

@ABM如果有帮助,你可以接受。按寒鸦 –