prepareforsegue() 未执行 (swift/storyboards)
prepareforsegue() not executing (swift/storyboards)
我正在制作一个小型测试应用程序,并且正在使用 Xcode 中的 "master detail" 应用程序模板。我希望能够将一个数组从详细视图发送到主视图。
我尝试使用 prepareForSegue()
,但问题是它从未被调用过。当我点击后退按钮时(默认情况下已经存在(由 Xcode 预先生成)),它根本不执行代码。
prepareForSegue()
但是从主视图到详细视图都可以正常工作。
抱歉,如果这个问题的答案很明显,但我对编程还很陌生,所以这让我有点困惑!
谢谢!
通过导航堆栈 "back" 不是 segue,因此它不会触发 prepareForSegue
或其他与 segue 相关的方法。通常,导航堆栈的设计使得主列表不需要了解详细视图中发生的事情。
不过,如果需要,您可以使用 viewWillAppear
/viewWillDisappear
方法来查明用户何时从详细信息导航回主信息。例如,如果您需要做的只是更新主列表以反映对细节项的更改,您可以使用选定的索引路径(仍处于选中状态)让主列表的 viewWillAppear
实现调用 reloadRowsAtIndexPaths:withRowAnimation:
从用户导航到详细信息视图时开始)。然后,您通常用于填充单元格的逻辑可以获取对该行表示的对象所做的任何更改(以及您从中返回的详细视图)。
当您返回时,您将弹出导航堆栈,并且当您从详细视图返回到主视图时,不会调用 prepareForSegue。要将数据从 detail 传回 master,您将需要 Unwind Segue。 unwind segue 通过一个或多个 segue 向后移动到 return 用户到视图控制器的现有实例。你使用 unwind segues 来实现反向 navigation.More 细节可以从这里学习
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
}
}
我正在制作一个小型测试应用程序,并且正在使用 Xcode 中的 "master detail" 应用程序模板。我希望能够将一个数组从详细视图发送到主视图。
我尝试使用 prepareForSegue()
,但问题是它从未被调用过。当我点击后退按钮时(默认情况下已经存在(由 Xcode 预先生成)),它根本不执行代码。
prepareForSegue()
但是从主视图到详细视图都可以正常工作。
抱歉,如果这个问题的答案很明显,但我对编程还很陌生,所以这让我有点困惑!
谢谢!
通过导航堆栈 "back" 不是 segue,因此它不会触发 prepareForSegue
或其他与 segue 相关的方法。通常,导航堆栈的设计使得主列表不需要了解详细视图中发生的事情。
不过,如果需要,您可以使用 viewWillAppear
/viewWillDisappear
方法来查明用户何时从详细信息导航回主信息。例如,如果您需要做的只是更新主列表以反映对细节项的更改,您可以使用选定的索引路径(仍处于选中状态)让主列表的 viewWillAppear
实现调用 reloadRowsAtIndexPaths:withRowAnimation:
从用户导航到详细信息视图时开始)。然后,您通常用于填充单元格的逻辑可以获取对该行表示的对象所做的任何更改(以及您从中返回的详细视图)。
当您返回时,您将弹出导航堆栈,并且当您从详细视图返回到主视图时,不会调用 prepareForSegue。要将数据从 detail 传回 master,您将需要 Unwind Segue。 unwind segue 通过一个或多个 segue 向后移动到 return 用户到视图控制器的现有实例。你使用 unwind segues 来实现反向 navigation.More 细节可以从这里学习 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
}
}