2012-10-26 44 views
3

我有一个AnimalViewController。它是一个基本的视图控制器。我还有UIStoryBoard中的AnimalViewController场景。UIStoryboard和继承

我有一个关于继承的问题。

@interface BearViewController : AnimalViewController 
@interface LionViewController : AnimalViewController 

是否有可能使用AnimalViewController Scene实例化BearViewController?

PS BearViewController和LionViewController具有与AnimalViewController相同的接口。

回答

2

解决方案是使用xib代替故事板。

BearViewController *bearVC = [[BearViewController alloc] initWithNibName:@"Animal" bundle:nil]; 
LionViewController *lionVC = [[LionViewController alloc] initWithNibName:@"Animal" bundle:nil]; 
+0

[策略模式是解决此问题的另一种方法。](http://stackoverflow.com/a/17381927/419348) – AechoLiu

-1

你,你可以做以下的,但我不认为故事板被设计成做这样的事情,你仍然会为刚浇铸subclass所以基本上你将一无所获(除了不同的指针类型)AnimalViewController对象并获取运行时崩溃当您调用任何BearViewController定义的方法:

BearViewController *bearViewController = [storyboard instantiateViewControllerWithIdentifier:@"AnimalViewController"]; 

[[self navigationController] pushViewController:bearViewController animated:YES]; 
+0

该转换不会更改实际的运行时对象。它只是告诉编译器“信任你”......在运行时返回的对象将是一个BearViewController。如果场景配置为AnimalViewController,那么将在运行时返回...因此,您编写的代码不会实例化BearViewController。 –

+0

这正是我的意思......除了不同的指针类型,它不会给你任何东西。 –

+0

问题是关于如何实例化BearViewController。这个答案没有解决这个问题。 – Eric