在没有任何情节提要参考的情况下在控制器之间传递数据

Posted

技术标签:

【中文标题】在没有任何情节提要参考的情况下在控制器之间传递数据【英文标题】:Pass data between controller without any kind of storyboard reference 【发布时间】:2016-06-05 09:45:40 【问题描述】:

我正在尝试在 tableview 和 viewcontroller 之间传递数据。 出于此处不再重复的原因,我仅通过代码以编程方式创建了视图控制器,并且在情节提要中没有任何类型的引用和存在(我在情节提要中没有 ViewController)。一切正常,图形转换也是如此,但数据转换也是如此。 在图形转换之前,我在“didSelectRowAtIndexPath”中执行了数据转换。

在视图控制器中

var purchase:Purchase?

在 TableViewController 中

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 

    var arrayToUse:NSArray?
    var tableInUse:UITableView?
    let dc = DetailsViewController() 

   // Retrive the correct data here 

    let indexPath = tableInUse?.indexPathForSelectedRow
    dc.purchase = arrayToUse?.objectAtIndex((indexPath?.row)!) as! Purchase
    let temp = arrayToUse?.objectAtIndex((indexPath?.row)!) as! Purchase
    print(temp.title)

    self.navigationController!.pushViewController(DetailsViewController(), animated: true)

我查看了在此处和其他站点中找到的不同解决方案,但我总是找到考虑“segue”或“nib”的解决方案。 我做错了什么?

我希望我说清楚了 非常欢迎各种帮助或提示。

谢谢

【问题讨论】:

【参考方案1】:

问题是您正在创建DetailsViewController 的实例并将数据设置到它,但推送另一个DetailsViewController 对象。您应该使用之前创建的 dc 对象而不是创建新实例。

代替:

self.navigationController!.pushViewController(DetailsViewController(), animated: true)

你应该使用:

self.navigationController!.pushViewController(dc, animated: true)

【讨论】:

谢谢。就这么简单。有时 Ti 会绊倒自己。再次感谢您

以上是关于在没有任何情节提要参考的情况下在控制器之间传递数据的主要内容,如果未能解决你的问题,请参考以下文章

在视图控制器/情节提要场景之间传递核心数据结果

在没有情节提要的情况下在 UIView 中添加 UICollectionView

如何在情节提要中的 2 个视图控制器之间传递数据?

是否可以在不使用情节提要的情况下在 xib 文件中创建原型内容 UITableview?

在情节提要中定位 UILabel

在没有导航控制器的情节提要中切换 UIViewControllers