Ios 尝试切换到不同情节提要中的不同视图控制器时没有响应
我在故事板Alpha上有一个按钮,它使用以下代码引导故事板Beta版:Ios 尝试切换到不同情节提要中的不同视图控制器时没有响应,ios,swift,xcode,uistoryboard,Ios,Swift,Xcode,Uistoryboard,我在故事板Alpha上有一个按钮,它使用以下代码引导故事板Beta版: @IBAction func showBeta(_ sender: Any) { let storyboard = UIStoryboard(name: "Beta", bundle: nil) let bvc = storyboard.instantiateViewController(withIdentifier: "BetaViewController") as! BetaViewController
@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将显示为从左到右的过渡,您将获得所需的后退按钮
要添加导航控制器,请执行以下操作:
如果从interface builder添加了AlphaViewController,请按照以下步骤将其嵌入导航控制器:选择AlphaViewController->Editor->embed in->navigation controller
或者,如果您以编程方式添加了控制器,则可以检查。您的第一个视图控制器是在导航控制器中吗?