【发布时间】:2011-05-26 01:06:48
【问题描述】:
在Using initWithNibName changes absolutely nothing 帖子中,他展示了同一个 View Nib 定义的两种用法,在第一种情况下,他只是调用 alloc/init,而在第二种情况下,他指定了 initWithNibName。
所以,虽然这总是有效的:
MyViewController *vctrlr = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController pushViewController:vctrlr animated:YES];
[vctrlr release];
以下适用于我继承的所有视图控制器,但不适用于我的!
TheirViewController *vctrlr = [[TheirViewController alloc] init];
[self.navigationController pushViewController:vctrlr animated:YES];
[vctrlr release];
iOS 编程新手,我继承了一些代码。所有视图控制器的视图都在 IB 中定义,但是这些视图控制器的分配/初始化创建不一致。我创建了一个新的视图控制器和 XIB,但除非我使用 initWithNibName,否则它不起作用(当我将视图控制器推到导航控制器上时它会崩溃)。我无法说出我的视图控制器与其他控制器有何不同......有什么提示吗?我能够删除应用程序中除我之外的所有其他视图控制器的 initNibName 用法。
【问题讨论】:
-
通常最好指定NIB名称,因为它实际上是从视图控制器中抽象出视图。例如,如果您有一个控制器,其视图根据某些条件略有不同,您可以将单独的 nib 作为视图加载。
-
你在
vctrlr中实现了loadView方法吗? -
loadViews在这两种情况下都没有实现。
标签: ios uiviewcontroller interface-builder designated-initializer