如何关闭当前视图并重新加载另一个?

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 崩溃。