我有以下故事板:Main Storyboard
其中,一些自定义视图控制器以编程方式嵌入到滚动视图中。在其中一个中,有一个按钮,应该触发一个segue来显示"嘿"屏幕。
然后我编写了以下代码:
@IBAction func addNewDateButtonDidTouched(sender :AnyObject) {
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let storyboardInit = mainStoryboard.instantiateViewControllerWithIdentifier("mainview")
storyboardInit.performSegueWithIdentifier("showNewDate", sender: self)
}
这个@IBAction
似乎重新加载初始视图控制器并执行segue correclty(Xcode不会返回任何错误)。但是"嘿"屏幕无法显示且viewDidLoad()
无法加载。
任何提示?
答案 0 :(得分:2)
而不是打电话
storyboardInit.performSegueWithIdentifier("showNewDate", sender: self)
尝试
self.performSegueWithIdentifier("showNewDate", sender: self)
答案 1 :(得分:0)
代码中的storyboardInit
将实例化具有标识符“UIViewController
”的mainview
。
但是,当您要求控制器执行segue时,此UIViewController
尚未添加到屏幕上。
所以,我不会这样做。我要做的是,切换到嘿屏幕是:
self.performSegueWithIdentifier
instantiateViewControllerWithIdentifier
,然后执行self.presentViewController
因此,要转换到新控制器,必须从当前控制器开始。
答案 2 :(得分:0)
如果我正确理解你的viewcontroller层次结构......
因为包含触发segue按钮的viewcontroller是viewcontroller的childviewcontroller,它在storyboard中设置了segue,我认为你必须调用presentingViewController?.performSegueWithIdentifier("showNewDate", sender: self)
。