我有一个表格视图,其中填充了包含用户朋友的单元格。选中一个单元格时,应该拉出该朋友的个人资料。但是,虽然配置文件视图确实显示,但我不知道如何告诉其视图控制器加载该朋友的配置文件数据。为了响应用户操作,您如何让两个视图控制器相互通信?提前谢谢。
答案 0 :(得分:1)
您需要设置" user"那个"目的地的财产"在当前视图控制器中查看控制器:
在当前视图控制器中设置selectedUser属性:
class CurrentTableViewController: TableViewController {
var selectedUser: AnyObject?
...
}
然后,当选择该朋友的单元格时,设置" selectedUser"属于" didSelectRowAtIndexPath":
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.selectedUser = // get the user property depending on how you're defining your table cells in the first place
self.performSegueWithIdentifier("pushToUser", sender: self)
}
接下来在prepareForSegue方法中,定义目标视图控制器并设置其" user"来自" self.selectedUser"属性:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "pushToUser") {
var userProfileTableViewController: UserProfileTableViewController = segue.destinationViewController as UserProfileTableViewController
userProfileTableViewController.user = self.selectedUser
}
}
最后,在目标视图控制器(在本例中为UserProfileTableViewController)中,您可以使用" self.user"来调用数据库查询等。
答案 1 :(得分:1)
让我们有两个视图控制器: destinationVC和sourceVC
在destinationVC中创建可选变量,以存储您想要在VC之间共享的值。
在sourceVC
中segue.destinationViewController
获取destinationVC并将返回的值存储在变量中,例如destVC tableview.cellForRowAtIndexPath(tableView.indexPathForSelectedRow())
然后在destVC
编辑:根据Mike Taverne的评论更新了答案。