多个视图控制器和一个视图笔尖

Vaz*_*zyb 3 uiviewcontroller uikit ios

我想实现以下目标:

我有一个nib,它有一个负责该视图的View Controller.

我想编写从该视图控制器继承的类,因此与基本视图控制器共享相同的nib文件,但添加其他特定代码.我可以在基本视图控制器中构建大量功能但是它会变得混乱; 我真的希望能够使用一个nib具有相同的基本结构,然后具有添加其他功能的子类.

我遇到的麻烦是使用基类的视图实例化(在代码中)子类.

我试过[NSBundle nibWithNibName:...]和[[vc alloc] initWithNib:...] - 它们都给出了错误.

我是否将文件的所有者设置为基类?我是否为基类设置视图的自定义视图控制器?我该如何实现这一目标?

谢谢

mat*_*att 6

要设置从视图控制器到视图或子视图的出口,必须将nib中的文件所有者设置为视图控制器的类.

在实际的视图控制器可以声明为在笔尖文件的所有者类的子类.但是,出口必须仍然在超类中,否则您将无法使用其他子类加载.

例如,让我调用视图控制器SuperVC,Sub1VC和Sub2VC.然后:

  • 在SuperVC中定义所有需要的插座

  • 在nib中将文件所有者声明为SuperVC

  • 绘制笔尖中的所有出口连接view,当然包括

现在说:

Sub1VC* vc = [[Sub1VC alloc] initWithNibName:@"nibname" bundle:nil];
Run Code Online (Sandbox Code Playgroud)

要么:

Sub2VC* vc = [[Sub2VC alloc] initWithNibName:@"nibname" bundle:nil];
Run Code Online (Sandbox Code Playgroud)

他们都会工作.

  • 如果你想了解_why_是否有效,请参阅我从这里开始讨论nib-loading机制:http://www.apeth.com/iOSBook/ch07.html#_nib_loading_and_file_8217_s_owner (2认同)
  • @Yar肯定.这与视图控制器无关.你有没有看过我在评论中链接的书中的讨论? (2认同)