3

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

我的故事板中有 UITableViewController,它使用“动态原型”来自定义单元格。

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

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

使用 .xib 文件很容易做到这一点,我将编写以下代码:

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

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

我知道我可以在单击视图控制器时在情节提要编辑器中分配一个子类,但我想在实例化时以编程方式设置子类。

这对于 Storyboard 来说似乎是不可能的,因为它们是自动实例化的。

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

如果我将视图控制器从情节提要中移出并放入 .xib 文件中,我将无法使用动态和静态原型单元格,因为只有在使用情节提要时才支持这些单元格。Apple的文档也基本上说从现在开始使用Storybaords。

4

1 回答 1

-1

我会尝试这样的事情:

MyViewControllerSubclassA *controllerA = (MyViewControllerSubclassA *)[self.storyboard instantiateViewControllerWithIdentifier:@"myGenericVC"];
于 2012-10-10T10:06:55.190 回答