跨多个UIViewControllers重用nib

时间:2010-04-18 10:41:28

标签: iphone uitableview uiviewcontroller nib cocoa-design-patterns

我在nib文件中创建了一些自定义UITableViewCells,并希望在多个UIViewControllers中使用它。

有谁能告诉我这样做的最佳做法?我在加载nibs方面的有限知识似乎暗示你必须在Interface Builder中指定一个所有者类。

感谢。

2 个答案:

答案 0 :(得分:2)

做到这一点;没有真正的障碍。至于文件所有者的类,只要你在nib中绑定的键存在于你想要使用nib的任何对象中,你就可以了。

答案 1 :(得分:1)

您可以使用UIViewController以编程方式实例化initWithNibName:bundle:类,并为多个控制器指定相同的nib。例如,我正在构建一个游戏,它有一个GameController类,用于定义其中的基本游戏逻辑。 GameController有一个关联的GameController.xib文件,该文件会在自定义初始化程序中加载:

- (id)initWithOptions:(NSDictionary *)gameOptions
{    
    if (self = [super initWithNibName:@"GameController" bundle:nil])
    {
        // code here
    }
    return self;
}

我有几种不同的游戏类型:点对点,本地和&线上。游戏逻辑是相同的,但通信实现略有不同,因此每个都是GameController的子类。根据应用程序的使用方式,它将实例化一个不同的控制器:

local = [[LocalGameController alloc] initWithOptions:options];
online = [[OnlineGameController alloc] initWithOptions:options];

你可以看到,因为这些都扩展了GameController,所以这两个都将以GameController.xib为视图进行初始化。在这种情况下,GameController将是您的单个文件所有者。