动态加载NIB?

时间:2010-08-24 17:00:52

标签: iphone objective-c cocoa-touch

我没有使用三个独立的控制器及其相关的* .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?

欢呼加里

1 个答案:

答案 0 :(得分:1)

来自Apple的UIViewController文档,我假设ColorController是以下的子类:

定义UIViewController的新子类时,必须指定要由控制器管理的视图。有两种互斥的方式来指定这些视图:手动或使用nib文件。如果手动指定视图,则必须实现loadView方法并使用它将根视图对象分配给view属性。如果使用nib文件指定视图,则不得覆盖loadView,而应在Interface Builder中创建nib文件,然后使用initWithNibName:bundle:方法初始化视图控制器对象。使用nib文件创建视图通常更简单,因为您可以使用Interface Builder应用程序以图形方式创建和配置视图(而不是以编程方式)。但是,这两种技术都有相同的最终结果,即创建适当的视图集并通过视图属性公开它们。