我想实现以下目标:
我有一个nib,它有一个负责该视图的View Controller。
我想编写从此视图控制器继承的类,因此与基本视图控制器共享相同的nib文件,但添加其他特定代码。我可以在基本视图控制器中构建大量功能但是它会变得混乱;我真的希望能够使用一个nib具有相同的基本结构,然后具有添加其他功能的子类。
我遇到的麻烦是使用基类的视图实例化(在代码中)子类。
我尝试过[NSBundle nibWithNibName:...]和[[vc alloc] initWithNib:...] - 它们都会出错。
我是否将文件的所有者设置为基类?我是否为基类设置视图的自定义视图控制器?我如何实现这一目标?
由于
答案 0 :(得分:6)
要设置从视图控制器到视图或子视图的出口,您必须将笔尖中的文件所有者设置为视图控制器的类。
实际视图控制器可以是在nib中声明为File的所有者的类的子类。但是 outlet 仍然必须在超类中,或者您无法使用其他子类加载。
例如,让我调用视图控制器SuperVC,Sub1VC和Sub2VC。然后:
在SuperVC中定义所有所需的出口
将nib中的文件所有者声明为SuperVC
在笔尖中绘制所有出口连接,当然包括view
现在说:
Sub1VC* vc = [[Sub1VC alloc] initWithNibName:@"nibname" bundle:nil];
或者:
Sub2VC* vc = [[Sub2VC alloc] initWithNibName:@"nibname" bundle:nil];
他们都会工作。
答案 1 :(得分:0)
听起来我需要设置视口。
这是一个非常常见的错误。只需control + drag
从文件所有者(基本视图控制器)到顶级视图,然后设置view
的出口。