两个UIViewController,一个XIB文件

时间:2012-05-30 05:31:01

标签: iphone objective-c ios4

让我们说,我有三个UIViewController

  • UserFormViewContoller
  • NewUserFormViewController:UserFormViewController
  • UpdateUserFormViewController:UserFormViewController

因此,NewUserFormViewController和UpdateUserFormViewController视图控制器继承它的父级以共享基本功能。不同的将是他们的方法,创建和更新。

观点也有很多共同点,几乎所有东西。 NewUserFormViewController和UpdateUserFormViewController之间的不同视图组件是执行保存任务(创建或更新)的按钮

是否可以让两个UIViewController共享一个XIB文件?让我们说,UserFormViewController.xib然后我做

[[NewUserFormViewController alloc] initWithNibName@"UserFormViewController" bundle:nil];
[[UpdateUserFormViewController alloc] initWithNibName@"UserFormViewController" bundle:nil];

另一个问题但重要的是,当我使用Interface Builder编辑xib文件时,它所讨论的是什么所有者的参考插座和IBActions,NewUserFormViewController或UpdateUserFormViewController? (IBActions和Outlets显示我们何时右键单击占位符 - >文件所有者)

如果是这样的话,我将只使用一个XIB文件并以编程方式添加其他特定视图组件(如果只有一个XIB文件,那么我可以在一个地方进行一些更改,但两者都有效)

2 个答案:

答案 0 :(得分:3)

“文件所有者”只是一个约定,因此XCode可以在其检查器中向您显示正确的IBOutletIBAction。如果您创建通用(以OO术语:摘要)UserFormViewController(.h,.m,.xib),则将其连接到IB;然后将它子类化为两个NewUserFormViewControllerUpdateUserFormViewController,它们将从父类继承它们的出口和动作而没有任何问题。

答案 1 :(得分:1)

@Armaan我通过简单地调用子类'alloc init方法遇到了同样的问题。我通过使用initWithNibName修复了这个问题:并提供了父类的xib文件名。