Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 尝试切换到不同情节提要中的不同视图控制器时没有响应_Ios_Swift_Xcode_Uistoryboard - Fatal编程技术网

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

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

我在故事板Alpha上有一个按钮,它使用以下代码引导故事板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将显示为从左到右的过渡,您将获得所需的后退按钮

要添加导航控制器,请执行以下操作: 如果从interface builder添加了AlphaViewController,请按照以下步骤将其嵌入导航控制器:选择AlphaViewController->Editor->embed in->navigation controller


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

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