繁体   English   中英

performSegueWithIdentifier在其他ViewController中不起作用

[英]performSegueWithIdentifier doesn't work in a different ViewController

我有以下情节提要主情节提要

其中,几个自定义View Controller以编程方式嵌入到Scroll View中。 在其中一个按钮中,有一个按钮,应该触发一个按钮以显示“嘿”屏幕。

然后,我编写了以下代码:

@IBAction func addNewDateButtonDidTouched(sender :AnyObject) {
    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let storyboardInit = mainStoryboard.instantiateViewControllerWithIdentifier("mainview")
    storyboardInit.performSegueWithIdentifier("showNewDate", sender: self)
}

这个@IBAction似乎重新加载了初始视图控制器并执行了segue修正(Xcode不返回任何错误)。 但是“嘿”屏幕未显示,并且其viewDidLoad()也未加载。

有什么提示吗?

而不是打电话

storyboardInit.performSegueWithIdentifier("showNewDate", sender: self)

尝试

self.performSegueWithIdentifier("showNewDate", sender: self)

您代码中的storyboardInit将实例化一个具有标识符“ mainview ”的UIViewController 但是,当您要求控制器执行检测时,此UIViewController尚未添加到屏幕上。

所以,我不会那样做。 我想做的就是显示以下内容:

  1. 从当前控制器创建self.performSegueWithIdentifier ,只需在代码中执行以下操作: self.performSegueWithIdentifier
  2. 实例化哎这样的控制器: instantiateViewControllerWithIdentifier ,然后就做self.presentViewController

因此,要过渡到新控制器,您必须从当前控制器开始。

如果我正确理解您的ViewController层次结构...

因为包含触发segue的按钮的viewcontroller是在故事板中具有segue设置的viewcontroller的childviewcontroller,所以我认为您必须调用presentingViewController?.performSegueWithIdentifier("showNewDate", sender: self)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM