如何以编程方式子类化存储在Storyboard中的UIViewController?

时间:2012-10-10 10:01:42

标签: xcode ios5 uiviewcontroller storyboard uistoryboardsegue

我正在开发我的第一个iPad应用程序并首次使用Storyboard。

我的Storyboard中有UITableViewController,它为自定义单元格使用“Dynamic Prototypes”。

我想要做的是以编程方式实例化我的UITableViewController子类,但是从Storyboard加载超级视图控制器。

这是因为我有一个UI,但是我需要为每个不同的实例提供特定功能的多个子类。

这对.xib文件非常容易,我会编写以下代码:

MyViewControllerSubClassA *viewControllerA = [[MyViewControllerSubClassA alloc] initWithNibName:@"generalViewControllerNib" bundle:nil];

MyViewControllerSubClassB *viewControllerB = [[MyViewControllerSubClassB alloc] initWithNibName:@"generalViewControllerNib" bundle:nil];

我知道我可以在单击View Controller时在Storyboard编辑器中指定一个子类,但我想在实例化时以编程方式设置子类。

这对于Storyboard来说似乎无法实现,因为它们会自动实例化。

这使得Storyboard的整个概念看起来有缺陷而且不是很好。

如果我将View Controller移出Storyboard并进入.xib文件,我将无法使用Dynamic&仅在使用Storyboard时才支持静态原型单元格。此外,Apple的文档基本上说从现在开始使用Storybaords。

1 个答案:

答案 0 :(得分:-1)

我会尝试这样的事情:

MyViewControllerSubclassA *controllerA = (MyViewControllerSubclassA *)[self.storyboard instantiateViewControllerWithIdentifier:@"myGenericVC"];