繁体   English   中英

prepareforsegue()不执行(swift / storyboard)

[英]prepareforsegue() not executing (swift/storyboards)

我正在制作一个小型测试应用程序,并在Xcode中使用“主要细节”应用程序模板。 我希望能够将阵列从详细信息视图发送到主视图。

我尝试使用prepareForSegue()但问题是从未调用过它。 当我按下后退按钮(默认情况下已经存在(由Xcode预先生成))时,它根本不会执行代码。

prepareForSegue()但是,从母版到详细视图都可以正常工作。

很抱歉,这个问题的答案很明显,但是我对编程非常陌生,所以这让我有些困惑!

谢谢!

在导航堆栈中“返回”不是安全的,因此不会触发prepareForSegue或其他与安全相关的方法。 通常,导航堆栈的设计方式是使主列表无论如何都不需要了解详细视图中发生的事情。

但是,如果需要,您可以使用viewWillAppear / viewWillDisappear方法来确定用户何时从viewWillDisappear导航到母版。 例如,如果您需要做的只是更新主列表以反映对详细信息的更改,则可以让主reloadRowsAtIndexPaths:withRowAnimation:viewWillAppear实现调用reloadRowsAtIndexPaths:withRowAnimation:并带有选定的索引路径(仍从用户导航时选择该路径)到详细视图)。 然后,用于填充单元格的常规逻辑可以拾取对该行(以及您从其返回的详细视图)表示的对象所做的任何更改。

当您返回时,您将弹出导航堆栈,并且当您从局部视图移回到主视图时,prepareForSegue将不会被调用。 要将数据从细节传递回主数据库,您将需要Unwind Segue。 展开的segue向后移动一个或多个segue,以使用户返回到视图控制器的现有实例。 您可以使用放松的搜索来实现反向导航。更多详细信息可以从这里https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson8.html了解

希望这对您有帮助...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let cell = sender as UITableViewCell
    if segue.identifier == "xyz" {
        var tabBarVC: UITabBarController = segue.destinationViewController as UITabBarController
        var test: LessonsDetailsViewController = tabBarVC.viewControllers?.first as LessonsDetailsViewController
        var row = self.tableView.indexPathForCell(cell)?.row
        var dataObj = lessonsNSMObj[row!]
        test.managedObject = dataObj
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM