【发布时间】:2014-06-16 16:08:53
【问题描述】:
我的故事板中有 5 个 CalculatorViewController 实例,但只有一个具有标识符“secondOperationViewController”。其中 3 个使用嵌入 segue 与我的初始 ViewController 连接,名为 ContainerViewController。
我希望标识符为“secondOperationViewController”的 ViewController 从我的 ContainerViewController 调用方法,但我无法正确实例化它,因此不会调用委托方法。这是我的代码的一部分:
override func viewDidLoad() {
super.viewDidLoad()
secondOperationViewController = storyboard.instantiateViewControllerWithIdentifier("secondOperationViewController") as? CalculatorViewController
secondOperationViewController!.delegate = self
println(secondOperationViewController)
}
有什么建议吗?
我也发现了类似的问题:
我将 CalculatorViewController 的实例重写为:
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
secondOperationViewController = segue!.destinationViewController as? CalculatorViewController
secondOperationViewController!.delegate = self;
}
它可以工作,但是我的委托方法被所有 3 个 ViewControllers 调用,连接到初始 ViewController,所以我需要另一个解决方案。
那么我怎样才能从具有指定标识符的 ViewController 中调用委托方法呢?有什么想法吗?
因此,embed segue 不适用于“instantiateViewControllerWithIdentifier”(但适用于模态呈现的 segue)。我不知道为什么。这是嵌入segue的解决方案:
override func viewDidLoad() {
super.viewDidLoad()
let secondOperationViewController:CalculatorViewController = childViewControllers[0] as CalculatorViewController
secondOperationViewController.delegate = self
}
【问题讨论】:
标签: ios uiviewcontroller delegates swift instantiation