如何关闭当前视图并重新加载另一个?
How to dismiss current view and reload another?
@IBAction func DoneButton(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as UIViewController
viewController.viewWillAppear()
}
它应该关闭我当前的视图并重新加载 ViewController
但它因致命错误而崩溃:意外
found nil while unwrapping an Optional value
是不是因为我之前解雇了?
对instantiateViewControllerWithIdentifier()
的调用returns一个可选的。因此,如果在您的故事板中找不到具有指定标识符的视图控制器,它将被设置为 nil 并且您调用 viewWillAppear
的下一行将崩溃。
您也有可能真的在 viewWillAppear
里面坠毁了。这不是 you 应该调用的方法。相反,当您的视图控制器出现时,UIKit 会为您调用该方法。
我猜你想做的是这样的:
if let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as UIViewController {
self.presentViewController(viewController,
animated: true, completion: nil)
}
如果不是,请为您的问题提供更多背景信息。
我正在考虑做任何一个
1.
let viewController = ViewController()
viewController.viewWillAppear(false)
2.
中学class:
let viewController = ViewController()
viewController.shouldRefresh = true
小学class:
var shouldRefresh: Bool!
override func viewWillAppear(animated: Bool) {
if shouldRefresh == true {
}
}
3.
中学class:
let viewController = ViewController()
viewController.reloadRoutineData()
小学class:
func reloadRoutineData() {
// Do my stuff here
}
第三个选项是我的变量,因为我只需要执行某些代码,而不是真正完全重新加载视图。但是它们在展开时都以 nil 崩溃。
@IBAction func DoneButton(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as UIViewController
viewController.viewWillAppear()
}
它应该关闭我当前的视图并重新加载 ViewController
但它因致命错误而崩溃:意外
found nil while unwrapping an Optional value
是不是因为我之前解雇了?
对instantiateViewControllerWithIdentifier()
的调用returns一个可选的。因此,如果在您的故事板中找不到具有指定标识符的视图控制器,它将被设置为 nil 并且您调用 viewWillAppear
的下一行将崩溃。
您也有可能真的在 viewWillAppear
里面坠毁了。这不是 you 应该调用的方法。相反,当您的视图控制器出现时,UIKit 会为您调用该方法。
我猜你想做的是这样的:
if let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as UIViewController {
self.presentViewController(viewController,
animated: true, completion: nil)
}
如果不是,请为您的问题提供更多背景信息。
我正在考虑做任何一个
1.
let viewController = ViewController()
viewController.viewWillAppear(false)
2.
中学class:
let viewController = ViewController()
viewController.shouldRefresh = true
小学class:
var shouldRefresh: Bool!
override func viewWillAppear(animated: Bool) {
if shouldRefresh == true {
}
}
3.
中学class:
let viewController = ViewController()
viewController.reloadRoutineData()
小学class:
func reloadRoutineData() {
// Do my stuff here
}
第三个选项是我的变量,因为我只需要执行某些代码,而不是真正完全重新加载视图。但是它们在展开时都以 nil 崩溃。