【问题标题】:No response when attempting to switch to different view controller in different storyboard尝试切换到不同情节提要中的不同视图控制器时没有响应
【发布时间】:2017-07-06 01:41:37
【问题描述】:

我在 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 使新视图以模态方式显示。

然后我阅读了this post,发帖者和我有同样的问题。答案建议使用此代码:

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)
}

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

【问题讨论】:

  • 您的第一个视图控制器是在导航控制器中吗?

标签: ios swift xcode uistoryboard


【解决方案1】:

您的 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

或者,如果您以编程方式添加了控制器,您可以查看this answer

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 2021-04-01
    • 2023-04-08
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多