展开 segue 不起作用 SWIFT
Unwind segue doesn't work SWIFT
我有一个带有 table 视图的导航控制器。当我按下一个单元格时,细节视图控制器打开。
在我的根视图控制器中我有:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "detailview" {
var destination:DetailViewController = segue.destinationViewController as DetailViewController
destination.delegate=self
}
}
在我的详细视图控制器中,我有一个后退按钮:
@IBAction func back() {
self.navigationController?.popViewControllerAnimated(true)
}
问题是,在 2 次转到和返回之后,当我返回根视图控制器并按下后退按钮时,我的应用程序崩溃了。控制台不会给我错误。它只是崩溃。
我想我忘了解除 segue。
所以在我的详细视图控制器中,我添加了:
@IBAction func unwindToViewController(segue: UIStoryboardSegue) {
println("unwind function")
}
我在故事板中使用 "exit" 将此功能连接到我的后退按钮。
当我运行我的应用程序时,如果我按下后退按钮,控制台不会显示我的打印 "unwind function",因此不会调用 unwindToViewController。为什么?
我的应用程序仍然崩溃...
你的 unwindToViewController
方法应该放在你的根 viewController 中,然后按住 ctrl 从 detailViewController 中的按钮拖动到 InterfaceBuilder 中的 Exit
图标。在弹出菜单中选择该方法。
另一种方法是在从 detailViewController 调用的 rootViewController 中声明一个具有函数的协议。您已经将 rootViewController 设置为 detailViewController 的委托。在该函数中,您调用 dismissViewController
.
Swift 回答...
我遇到了类似的问题。
func: "segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue
" 从未被调用过。
解决方案:
因为我没有 "UINavigationController",因为我只是将应用程序嵌入到导航控制器中,所以我为导航控制器创建了一个 UINavigationController 子类,并在其上添加了上面命名的函数。现在应用调用 "segueForUnwindingToViewController"
我有一个带有 table 视图的导航控制器。当我按下一个单元格时,细节视图控制器打开。
在我的根视图控制器中我有:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "detailview" {
var destination:DetailViewController = segue.destinationViewController as DetailViewController
destination.delegate=self
}
}
在我的详细视图控制器中,我有一个后退按钮:
@IBAction func back() {
self.navigationController?.popViewControllerAnimated(true)
}
问题是,在 2 次转到和返回之后,当我返回根视图控制器并按下后退按钮时,我的应用程序崩溃了。控制台不会给我错误。它只是崩溃。
我想我忘了解除 segue。 所以在我的详细视图控制器中,我添加了:
@IBAction func unwindToViewController(segue: UIStoryboardSegue) {
println("unwind function")
}
我在故事板中使用 "exit" 将此功能连接到我的后退按钮。
当我运行我的应用程序时,如果我按下后退按钮,控制台不会显示我的打印 "unwind function",因此不会调用 unwindToViewController。为什么?
我的应用程序仍然崩溃...
你的 unwindToViewController
方法应该放在你的根 viewController 中,然后按住 ctrl 从 detailViewController 中的按钮拖动到 InterfaceBuilder 中的 Exit
图标。在弹出菜单中选择该方法。
另一种方法是在从 detailViewController 调用的 rootViewController 中声明一个具有函数的协议。您已经将 rootViewController 设置为 detailViewController 的委托。在该函数中,您调用 dismissViewController
.
Swift 回答...
我遇到了类似的问题。
func: "segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue
" 从未被调用过。
解决方案:
因为我没有 "UINavigationController",因为我只是将应用程序嵌入到导航控制器中,所以我为导航控制器创建了一个 UINavigationController 子类,并在其上添加了上面命名的函数。现在应用调用 "segueForUnwindingToViewController"