【发布时间】:2012-09-30 18:25:37
【问题描述】:
我正在开发我的第一个 iPad 应用程序,并且是第一次使用 Storyboards。
我的 Storyboard 中有 UITableViewController,它为自定义单元格使用“动态原型”。
我想做的是以编程方式实例化我的 UITableViewController 子类,但从 Storyboard 加载超级视图控制器。
这是因为我有一个 UI,但有多个子类用于每个不同实例所需的特定功能。
使用 .xib 文件很容易做到这一点,我会编写以下代码:
MyViewControllerSubClassA *viewControllerA = [[MyViewControllerSubClassA alloc] initWithNibName:@"generalViewControllerNib" bundle:nil];
MyViewControllerSubClassB *viewControllerB = [[MyViewControllerSubClassB alloc] initWithNibName:@"generalViewControllerNib" bundle:nil];
我知道我可以在单击视图控制器时在 Storyboard 编辑器中分配一个子类,但我想在实例化时以编程方式设置子类。
故事板似乎无法做到这一点,因为它们是自动实例化的。
这使得 Storyboard 的整个概念看起来有缺陷,而且不是很 OO。
如果我将视图控制器从 Storyboard 中移出并移到 .xib 文件中,我将无法使用动态和静态原型单元格,因为只有在使用 Storyboard 时才支持这些单元格。此外,Apple 的文档基本上说从现在开始使用 Storybaords。
【问题讨论】:
-
完全一样的问题...你明白了吗?
-
不,我只需要将 tableviewcontroller 多次添加到情节提要中,每次都有一个单独的类。
-
我终于意识到我不需要任何 IB,所以我只是将我的 VC 子类化并用简单的 init 方法初始化它们......
-
我想我发现的限制是,如果你想使用静态表格视图单元格,你只能从 IB 中进行。
-
同样的问题,我想知道我们是否可以使用 initWithCoder...
标签: xcode ios5 uiviewcontroller storyboard uistoryboardsegue