通过传递数据。导航控制器

Posted

技术标签:

【中文标题】通过传递数据。导航控制器【英文标题】:pass data via. navigationController 【发布时间】:2014-10-06 18:24:34 【问题描述】:

我正在尝试将数据传递给 viewController。问题在于它嵌入在一个导航控制器中并且以模态方式呈现。如何传递给以模态方式呈现并嵌入在导航控制器中的 viewController

func offerNew(sender: UIBarButtonItem) 


    let offerVC = self.storyboard?.instantiateViewControllerWithIdentifier("OfferViewController") as UINavigationController


    self.presentViewController(offerVC, animated: true, completion: nil);

我试过了

    let offerVC = self.storyboard?.instantiateViewControllerWithIdentifier("offerNavigation") as UINavigationController
    let targetVC = offerVC.topViewController as OfferViewController
    self.presentViewController(targetVC, animated: true, completion: nil);

【问题讨论】:

【参考方案1】:

我假设 offerVC 是嵌入了“目标”视图控制器的 navigationController。如果是这样,您的目标视图控制器可以通过 offerVC 的topViewController 属性访问。所以

let targetVC = offerVC.topViewController as TargetViewController

会给你一个参考。然后,您可以访问目标视图控制器的属性。

编辑

但你应该出示 OfferVC - 它会自动显示 targetVC。

self.presentViewController(offerVC, animated: true, completion: nil);

【讨论】:

应用程序试图以模态方式呈现一个活动控制器 你是在展示targetVC,还是offerVC? 我正在展示targetVC 您应该出示 OfferVC。它将自动呈现 targetVC。如果你想预先设置任何属性,你只需要 targetVC。【参考方案2】:

您可以将属性添加到您的OfferViewController,然后分配它。您的视图初始化代码将在 loadView 中完成,直到 presentViewController 之后才会调用,因此在大多数情况下,在 init 期间没有它应该不是问题。

【讨论】:

以上是关于通过传递数据。导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

使用导航栏按钮项和核心数据在视图控制器之间传递日期

跨子导航控制器传递数据

将导航控制器添加到视图时无法传递数据

通过导航组件在底部导航片段之间传递数据

Swift:将数据从视图控制器传递到导航控制器

如果我使用 prepareForSegue 传递数据,则无法嵌入导航控制器