以编程方式将自定义类名设置为storyboard

时间:2015-02-20 06:03:19

标签: ios objective-c iphone oop

我正在尝试在iOS中以编程方式将自定义类名设置到storyboard。

我有一个带有viewcontroller MyFirstViewController的故事板,并将类名设置为MyFirstViewController

现在我创建了另一个扩展SecondViewController

的viewcontroller MyFirstViewController
 SecondViewController *vcsecond = (SecondViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"MyFirstViewController"];
        [self.navigationController pushViewController:vcsecond animated:YES];

当我运行此应用时,我的SecondViewController viewDidLoad方法无法调用,它会调用MyFirstViewController viewDidLoad方法。

我将vcsecond作为MyFirstViewController的对象。

请帮助我如何使用SecondViewController XIB打开MyFirstViewController

我只想继承MyFirstViewControllerSecondViewController的所有功能,并在此处覆盖某些方法,并在覆盖方法中执行一些具有附加功能的新代码。

两个viewcontroller的设计是相同的,只使用重写方法添加一些新功能。

Please refer this

在上面的屏幕中,TabSearchForDocViewController是我的MyFirstViewController控制器。

所以我的实际问题是----------

我有两个视图控制器的comman故事板页面。我的SecondViewController扩展了MyFirstViewController。现在我想使用comman storyboard页面打开我的SecondViewController。是否可以通过编程方式设置类名?

2 个答案:

答案 0 :(得分:0)

我不认为他作为你的标识符" MyFirstViewController"是可行的。保存对MyFirstViewController类的引用,并始终加载此类的头文件。 所以我不认为vcsecond会以这种方式为你加载。

答案 1 :(得分:0)

instantiateViewControllerWithIdentifier将始终返回故事板中相应场景中指定的类的实例 - 您无法在运行时覆盖此实例。

我建议你创造一个“瘦身”的对象。对象,它是您在故事板场景中指定的类。然后,您可以使用委派模式创建实现视图控制器功能的其他对象类(使用继承)。然后,您可以在运行时实例化相应的委托实例。