跨多个UIViewControllers重复使用nib文件

3
我已经在一个nib文件中创建了一些自定义的UITableViewCells,并希望在多个UIViewControllers中使用它们。请问有什么最佳实践的方法吗?我的有限知识关于加载nib似乎表明你必须在Interface Builder中指定一个单一的owner类。谢谢。
2个回答

2

只要勇往直前,没有真正的障碍。至于File's Owner类,只要在nib中绑定的键存在于您想要使用nib的任何对象中,您就可以放心使用。


1
我认为如果你想更加清晰地完成这个任务,你也可以为文件的所有者指定一个@interface - Kristopher Johnson
那是一个很好的提示,Kristopher。谢谢大家。 - colm

1

您可以使用initWithNibName:bundle:方法在编程中以编程方式实例化UIViewController类,并为多个控制器指定相同的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 将是您的单个文件所有者。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接