尝试切换到不同情节提要中的不同视图控制器时无响应

No response when attempting to switch to different view controller in different storyboard

我在 Storyboard Alpha 上有一个按钮,可以使用以下代码转到 Storyboard Beta:

@IBAction func showBeta(_ sender: Any) {

    let storyboard = UIStoryboard(name: "Beta", bundle: nil)
    let bvc = storyboard.instantiateViewController(withIdentifier: "BetaViewController") as! BetaViewController

    self.present(bvc, animated: true, completion: nil)
}

这没有任何问题。

但是,我 运行 解决了 Beta 版中没有后退按钮的问题,因为 self.present 使新视图以模态方式显示。

然后我阅读了 发帖人遇到了与我相同的问题。答案建议此代码:

self.navigationController?.pushViewController(viewController: UIViewController, animated: Bool)

所以我将代码更改为:

@IBAction func showBeta(_ sender: Any) {

    let storyboard = UIStoryboard(name: "Beta", bundle: nil)
    let bvc = storyboard.instantiateViewController(withIdentifier: "BetaViewController") as! BetaViewController

    self.navigationController?.pushViewController(bvc, animated: true)
}

但是,现在单击按钮时什么也没有发生。没有错误,什么都没有。这是怎么回事?

您的 AlphaViewController 似乎没有嵌入 UINavigationController

试试这段代码:

@IBAction func showBeta(_ sender: Any) {

    let storyboard = UIStoryboard(name: "Beta", bundle: nil)
    let bvc = storyboard.instantiateViewController(withIdentifier: "BetaViewController") as! BetaViewController

    show(bvc, sender: self)
}

如果您的 AlphaViewController 没有嵌入到导航控制器中,这将导致您的 BetaViewController 模态显示,并且您不会获得后退按钮。但是,如果您的 AlphaViewController 嵌入在导航控制器中,那么您的 BetaViewController 将显示为从左到右的过渡,您将获得所需的后退按钮。

添加导航控制器:

如果您从界面生成器添加了 AlphaViewController,请按照以下步骤将其嵌入导航控制器:SelectAlphaViewController -> Editor -> Embed In -> Navigation Controller

或者,如果您以编程方式添加控制器,则可以检查