@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
是因为我以前解雇了吗?
答案 0 :(得分:0)
对instantiateViewControllerWithIdentifier()
的调用会返回一个可选项。因此,如果在故事板中找不到具有指定标识符的视图控制器,则它将设置为nil,并且您调用viewWillAppear
的下一行将崩溃。
实际上你也可能在viewWillAppear
内崩溃。这不是你应该调用的方法。相反,当您的视图控制器出现时,UIKit将为您调用该方法。
我想你要做的是这样的事情:
if let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as UIViewController {
self.presentViewController(viewController,
animated: true, completion: nil)
}
如果没有,请为您的问题提供更多背景信息。
答案 1 :(得分:0)
我想要做任何一次
1
let viewController = ViewController()
viewController.viewWillAppear(false)
2
在中学阶段:
let viewController = ViewController()
viewController.shouldRefresh = true
在小学班级:
var shouldRefresh: Bool!
override func viewWillAppear(animated: Bool) {
if shouldRefresh == true {
}
}
3
在中学阶段:
let viewController = ViewController()
viewController.reloadRoutineData()
在小学班级:
func reloadRoutineData() {
// Do my stuff here
}
第三个选项是我的变量,因为我只需要做某些代码,而不是真正重新加载视图。但是在打开时,所有这些都会以nil崩溃。