Swift - 告诉TableViewController要填充哪些数据

时间:2015-01-24 16:26:22

标签: ios uitableview swift uiviewcontroller

我有一个表格视图,其中填充了包含用户朋友的单元格。选中一个单元格时,应该拉出该朋友的个人资料。但是,虽然配置文件视图确实显示,但我不知道如何告诉其视图控制器加载该朋友的配置文件数据。为了响应用户操作,您如何让两个视图控制器相互通信?提前谢谢。

2 个答案:

答案 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

  • 覆盖prepareForSegue方法
  • 使用segue.destinationViewController获取destinationVC并将返回的值存储在变量中,例如destVC
  • 使用所选单元格中的值
  • 初始化destVC的可选变量
  • 您可以使用tableview.cellForRowAtIndexPath(tableView.indexPathForSelectedRow())
  • 获取所选单元格
  • 从所选单元格中获取数据并将其分配给destVC的变量

然后在destVC

  • 在viewDidLoad方法
  • 检查可选变量是否为nil
  • 使用变量值加载/更新destVC。

编辑:根据Mike Taverne的评论更新了答案。