【问题标题】:prepareForSegue can't get the destination view controller on iOS 7prepareForSegue 在 iOS 7 上无法获取目标视图控制器
【发布时间】:2015-05-08 04:55:31
【问题描述】:

我必须编写一个同时支持 iOS 7 和 8 的 iOS 应用程序,在这个应用程序中,我有两个视图控制器 A 和 B,带有导航控制器和它们之间的 segue。当 segue 激活时,我必须从视图控制器 A 获取数据到视图控制器 B。我的代码在 iOS 8 上完美运行,但在 iOS 7 上却不行。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.

    if segue.identifier == userDataSegue {
        let navController = segue.destinationViewController as? UINavigationController

        if let userDataTableViewController = navController?.topViewController as? UserDataTableViewController {
            userDataTableViewController.userData = user
        }
    }
}

您知道为什么会发生这种情况吗?我该如何解决?我可以通过将内容保存在 NSUserDefaults 中并在 vc B 中读取来“解决”这个问题,但这会使我的代码变得一团糟。

感谢您的帮助:D

【问题讨论】:

  • userDataSegue 是什么?
  • 这是什么转场?一个模态的?因为如果它是“常规”推送 segue,destinationviewcontroller 应该是 userdatatableviewcontroller 而不是另一个导航控制器。奇怪的是你说它适用于 ios8...
  • @AndreSlotta 另一个视图控制器是一个嵌入了导航控制器的常规视图控制器。它确实适用于 iOS 8。
  • @rodrigoalves 但它是什么样的转场?模态的?推?
  • 好的。在这种情况下,您应该直接转到 userDataTableViewController 而不是嵌入到 NavigationController 中...

标签: ios swift uiviewcontroller uistoryboardsegue


【解决方案1】:

不要忘记在 Second ViewController 中创建一个公共属性 userData。

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
{
if (segue.identifier == "segueTest") {
var svc = segue!.destinationViewController as secondViewController;

svc.userData = user

}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 2018-06-13
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多