从segue加载视图控制器时调用特定的构造函数

时间:2015-04-13 10:55:35

标签: ios objective-c iphone interface-builder segue

我在使用XCode 6界面构建器的两个视图控制器之间添加了一个segue。但是它调用默认构造函数。如何让它为第二个视图调用特定的构造函数?

view 1 -> click button -> activates segue -> calls constructor of view 2 -> displays view 2 

1 个答案:

答案 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;
}

(注意代码未经过测试,但应传达主要想法,如果您需要进一步解释请告诉我)