在viewControllers之间传递数据

时间:2015-11-21 02:54:47

标签: ios swift uiviewcontroller null

1)基本上,数据正在通过ViewControllers,但是要迟到了。 当nextViewController执行代码时,传递了一些变量

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "goto") ...

尚未设定。仍然没有。

2)我的第二个问题与第一个问题有关:我试图从selectedCell传递数据,所以我在委托didSelectItemAtIndexPath上分配一个全局变量。但当它达到prepareForSegue时,我要传递的变量仍为零。

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

您应该使用segue或表视图委托。

  1. 在Storyboard中将TableviewCell中的Segue设置为DetailViewController: -
  2. 在PrepareForSegue中获取选定的tableview单元格并访问相应的数据并传递到下一个DetailVC。

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        //get the selected indexPath
        let selectedIndex = self.tableView.indexPathForCell(sender as UITableViewCell)
        var dataTobePassed = dataArray[selectedIndex.row]
            destination.data = dataTobePassed
    }
    

    -OR -

    1. 如果两个ViewControllers之间存在segue,那么在tableview选择委托方法中,您可以设置segue。

      func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){     self.performSegueWithIdentifier(“showDetailVC”,sender:indexPath); }

    2. 然后在你的prepareForSegue方法

       override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
          if (segue.identifier == "showDetailVC") {
      
              let path = self.tableView.indexPathForSelectedRow()!
              segue.destinationViewController.detail = self.detailForIndexPath(path)
            }
          }