2012-05-30 53 views
1

比方说,我有三个UIViewController中两个UIViewController中,一个XIB文件

  • UserFormViewContoller
  • NewUserFormViewController:UserFormViewController
  • UpdateUserFormViewController:UserFormViewController

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

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

是否有可能让两个UIViewController共享一个XIB文件?比方说,UserFormViewController.xib然后我做

[[NewUserFormViewController alloc] [email protected]"UserFormViewController" bundle:nil]; 
[[UpdateUserFormViewController alloc] [email protected]"UserFormViewController" bundle:nil]; 

另一个问题,但重要的是,当我编辑XIB文件与Interface Builder中,什么主人的参考网点和IBActions是议论纷纷,NewUserFormViewController或UpdateUserFormViewController? (IBActions与出路显示,当我们点击鼠标右键在占位符 - >文件的所有者)

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

+0

是的,可以将一个XIB用于不同的UIViewController。 –

+0

是的,它有可能,但是有没有特定的理由去做? – Amitg2k12

+0

谢谢Nuzhat,但请看我的第二个问题。这真是我真正困惑的问题 –

回答

3

“文件所有者”只是一个惯例,因此XCode可以在其检查员中向您显示正确的IBOutlet s和IBAction s。如果您创建了一个通用(OO条款:摘要)UserFormViewController(.h,.m,.xib),请将它连接到IB;然后将其分为两个NewUserFormViewControllerUpdateUserFormViewController,他们将继承他们的父类和他们的行为没有任何问题。

+0

谢谢,Cyrille。通过阅读你的答案后的一些实验,有点找到了我的问题的答案。 –

+0

@Cyrille:我从父控制继承了一个子控制器,但是我的父控制器的IBOutlets未初始化。所以,我怀疑xib的继承。那么,您能否告诉我未初始化的奥特莱斯的原因。 – Iducool

+0

其实子类没有加载父类的xib。任何原因? – Iducool

1

@Armaan我只是通过调用子类的alloc init方法来解决同样的问题。我通过使用initWithNibName解决了这个问题:并且提供了父类的xib文件名。

+0

这将加载父节点的xib,但不加载子节点的xib – Iducool