是否可以使用单个类iphone sdk创建不同的.xib文件

时间:2010-05-19 10:04:08

标签: iphone cocoa-touch uitableview

在我的应用程序中,我需要在不同的tableView单元格中加载不同的.xib,具体取决于我从解析器获取的数据类别。我想问一下,是否有可能创建属于同一类的不同.xib,因为它会减少负载,因为我有近13个类别,所以13 .xib文件。

提前致谢。

3 个答案:

答案 0 :(得分:2)

@“我想问一下,是否有可能创建属于同一类的不同.xib,因为它会减少负载,因为我有近13个类别,所以13 .xib文件。”

除非加载了xib文件,否则它们不会对内存造成负担,在这种情况下,会创建文件的所有者对象。因此,记住这一点,无论你的类有多少个nib,对于每个viewController类的对象,都会加载相应的xib。因此,最终你必须按照RaYell的说明进行检查,最好引入检查生成viewController对象的位置,而不是检查加载适当xib的条件。

不要打扰创建13个viewControllers,如果需求发生变化,您会发现以后更容易在项目中进行更改。你会欣赏这种方法。

如果只创建一个UIViewController子类并根据某些条件加载13个xib中的一个,比如说,需要在第13个xib中添加一个button / label / textField,并在viewController中需要它的引用类。你将如何实现它,你在公共viewController类中维护一个IBOutlet并引入if-else检查以查看它是否是第13类。代码变得不整齐,有很多if else条件。

答案 1 :(得分:1)

如果你的意思是你想要为同一个视图控制器提供多个NIB,那么它肯定是可能的。事实上,这就是应用程序本地化的方式。然后,您可以在初始化控制器时加载特定的NIB。

NSString *nibName = @"DefaultNibName";
if (someCondition) {
     nibName = @"SomeOtherNib";
}

YourViewController *controller = [[YourViewController alloc] 
                                 initWithNibName:nibName bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
[controller release];

答案 2 :(得分:1)

但是,如何在不同的.xib文件中建立不同的连接(出口)?

你会在一个控制器中保留很多插座和动作吗?如果是这样,那么想想你试图进入那个假设是其他笔尖的插座。然后会发生什么?

如果您尝试这样做,那么您查看控制器将看起来像垃圾。所以请不要只使用一个控制器来加载多个.xib文件。