1

我不清楚如何重用视图控制器。如果您创建了一个视图控制器子类来执行某些操作(实际上并不重要,它只执行您在视图中需要的操作),它可以与不同的视图一起使用还是应该再次子类化?

换句话说,如果我在应用程序的不同部分的视图中需要完全相同的功能,我可以使用原始视图控制器并从新视图中添加插座吗?或者我应该子类化自定义控制器并为视图提供“自己的”视图控制器?

4

1 回答 1

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 的笔尖会发生变化。

另一种方法

只是在这里大声思考。

你也可以创建一个没有 nib 的 ViewController。

然后创建两个子类,每个子类都有一个笔尖。现在您有了代码重用和单独的布局,但您还可以对“主”控制器的每个子类进行精细的控制调整。

然后,您可以从此主视图控制器创建任意数量的子类。

使用故事板

只需将一个新的 ViewController 对象拖到情节提要上。将类更改为视图控制器类并设置 UI 并将控件拖动到代码等...然后您将拥有两个看起来不同但共享相同功能代码的屏幕。

这和我一开始说的一样,但是用故事板代替。

于 2012-12-13T16:46:57.417 回答