繁体   English   中英

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

[英]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()返回一个可选的。 因此,如果无法在情节提要中找到具有指定标识符的视图控制器,它将设置为nil,则调用viewWillAppear的下一行将崩溃。

实际上,您也有可能在viewWillAppear内部崩溃。 那不是应该调用的方法。 相反,当显示视图控制器时,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。

在中学班:

    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 
} 

第三个选项是我的变量,因为我只需要执行某些代码,而无需真正完全重载视图。 但是它们在展开时都崩溃为零。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM