我没有使用三个独立的控制器及其相关的* .xib文件,而是尝试设置一个通用控制器,然后使用三个不同的xib文件之一实现它REDXT“”GREEN.xib“&”BLUE.xib “
NSString *nibColor;
switch (selectedRow) {
case 0:
nibColor = @"RED";
break;
case 1:
nibColor = @"GREEN";
break;
case 2:
nibColor = @"BLUE";
break;
}
ColorController *colorController = [[ColorController alloc] initWithNibName:nibColor bundle:nil];
我的问题是我没有链接视图并收到以下错误。
loaded the "RED" nib but the view outlet was not set.
我理解通常你会链接IB中的视图,但有没有办法在运行时动态选择nib,或者我是否需要创建单独的redController,blueController和greenControllers?
欢呼加里答案 0 :(得分:1)
来自Apple的UIViewController文档,我假设ColorController是以下的子类:
定义UIViewController的新子类时,必须指定要由控制器管理的视图。有两种互斥的方式来指定这些视图:手动或使用nib文件。如果手动指定视图,则必须实现loadView方法并使用它将根视图对象分配给view属性。如果使用nib文件指定视图,则不得覆盖loadView,而应在Interface Builder中创建nib文件,然后使用initWithNibName:bundle:方法初始化视图控制器对象。使用nib文件创建视图通常更简单,因为您可以使用Interface Builder应用程序以图形方式创建和配置视图(而不是以编程方式)。但是,这两种技术都有相同的最终结果,即创建适当的视图集并通过视图属性公开它们。