我在使用XCode 6界面构建器的两个视图控制器之间添加了一个segue。但是它调用默认构造函数。如何让它为第二个视图调用特定的构造函数?
view 1 -> click button -> activates segue -> calls constructor of view 2 -> displays view 2
答案 0 :(得分:2)
遗憾的是,使用segue是不可能的,您无法进一步指定 destinationViewController
应该如何实例化。
但是,您可以自己实例化UIViewController
并将其手动推送到导航堆栈,而不是使用Storyboard segue。
- (IBAction)buttonTap
{
ViewController2 *vc2 = <your custom constructor>;
[self.navigationController pushViewController:vc2 animated:YES];
}
(请注意,这模仿了推送segue 给你的完全相同的行为)
否则,如果您想继续使用Storyboard segue,并且您的实际目标是初始化ViewController2
的某些属性,则可以实现prepareForSegue:
并在其中设置属性。
- (void)prepareForSegue:(UIStoryboardSegue *)segue
{
ViewController2 *vc2 = segue.destinationViewController;
// set properties here
vc2.prop = xyz;
}
(注意代码未经过测试,但应传达主要想法,如果您需要进一步解释请告诉我)