尝试切换到不同情节提要中的不同视图控制器时无响应
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
,请按照以下步骤将其嵌入导航控制器:Select
AlphaViewController -> Editor -> Embed In -> Navigation Controller
或者,如果您以编程方式添加控制器,则可以检查 。
我在 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
,请按照以下步骤将其嵌入导航控制器:Select
AlphaViewController -> Editor -> Embed In -> Navigation Controller
或者,如果您以编程方式添加控制器,则可以检查