是否可以在使用instantiateViewControllerWithIdentifier实例化的ViewControllers视图中使用segues?
这是我正在尝试做的最小例子(我需要在biger项目中使用类似的东西): 在主故事板中,我有一个rootViewController,一个带有StoryboardID“secondViewControllerID”和第三个ViewController的secondViewController。 secondViewController通过show-Segue与第三ViewController按钮连接。
在rootViewController的类中,我实例化了secondViewController并将其视图设置为我的rootViewController的子视图:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let storyboard = UIStoryboard(name: "Main", bundle: nil);
var vc = storyboard.instantiateViewControllerWithIdentifier("secondViewControllerID") as UIViewController
self.view.addSubview(vc.view)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
当我现在执行程序时,我正确地看到了子视图(secondViewController)。但是现在segue不再起作用了(当我点击按钮时我没有进入第三个ViewController)
有谁知道为什么?
(我的项目中不可能只使用没有instantiateViewControllerWithIdentifier的secondViewController,因为secondViewController是通过instantiateViewControllerWithIdentifier管理其viewControllers的pageViewController的一部分)
答案 0 :(得分:0)
您正在添加一个视图控制器的视图作为另一个视图控制器的子视图。但默认情况下,点击和手势由主视图控制器处理,不会传递给子VC - 因此是您的问题。您需要调用一些函数才能使其工作。请查看Apple文档here。
查看"创建自定义容器视图控制器"部分。总之,您需要使用addSubview
和self.addChildViewController(vc)
函数调用来封送vc.didMoveToParentViewController(self)
方法调用。