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

Calling specific constructor when loading a view controller from segue

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

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

不幸的是,使用 segue 是不可能的,您无法进一步指定 如何 destinationViewController 应该被实例化。

但是,您可以自己实例化 UIViewController,然后手动将其推送到导航堆栈,而不是使用 Storyboard segue。

- (IBAction)buttonTap
{
   ViewController2 *vc2 = <your custom constructor>;
   [self.navigationController pushViewController:vc2 animated:YES]; 
}

(请注意,这模仿了 push segue 给你的完全相同的行为)

否则,如果您想继续使用 Storyboard segue 并且您的实际目标是初始化 ViewController2 的某些属性,您可以实现 prepareForSegue: 并在那里设置属性。

- (void)prepareForSegue:(UIStoryboardSegue *)segue
{
   ViewController2 *vc2 = segue.destinationViewController;
   // set properties here
   vc2.prop = xyz;
}

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