我不清楚如何重用视图控制器。如果你已经创建了一个视图控制器子类来完成一些事情(它的作用并不重要,只是它在视图中你需要它),它可以用于不同的视图还是应该再次被子类化?
换句话说,如果我在应用程序的不同部分的视图中需要完全相同的功能,我可以使用原始视图控制器并只添加新视图中的插座吗?或者我应该将自定义控制器子类化并将视图赋予其“自己的”视图控制器?
答案 0 :(得分:3)
您可以为视图控制器创建两个xib。
如果您有文件......
MyViewController.m
MyViewController.h
然后你可以添加xibs ......
MyViewControllerXib1
MyViewControllerXib2
只需制作“文件所有者”MyViewController。
然后当您需要第一个XIB的UI布局时,您可以调用...
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewControllerXib1" bundle:[NSBundle mainBundle]];
当您需要第二个UI时,您可以调用...
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewControllerXib2" bundle:[NSBundle mainBundle]];
您获得的对象将是相同的,但是布局UI的笔尖将会改变。
另一种方法
在这里大声思考。
您也可以创建一个没有笔尖的ViewController。
然后使用nib创建两个子类。现在你有代码重用和单独的布局,但你也可以对你的“主”控制器的每个子类进行精细的控制调整。
然后,您可以从此主视图控制器创建任意数量的子类。
使用故事板
只需将新的ViewController对象拖到故事板上即可。将类更改为视图控制器类并设置UI并将控件拖动到代码等...然后,您将有两个看起来不同但共享相同功能代码的屏幕。
这与我最初所说的相同,但改为使用故事板。