如何以编程方式在一个*视图控制器下设置多个自定义UIViewController?

问题描述:

作为Xcode和Objective-C的新手我发现很难在接口构建器和Objective-C中处理基本模式的事情。我创建了一个UIViewController的子类,我想多次实例化一个网格,每一行都由这个类的一个实例控制。所以会有一个根视图控制器(包含导航等)应该包含/生成自定义子视图控制器的所有实例。如何以编程方式在一个*视图控制器下设置多个自定义UIViewController?

现在最好的办法是做什么?我可以找到的所有示例都是关于导航,其中一个视图应该替换另一个,但我希望所有viewcontroller都可以在同一个“页面”上显示。我是否需要为自定义控制器创建一个nib文件?我也一直在考虑使用UITableView,但在每一行插入我的自定义视图控制器。

任何帮助非常感谢!

Apple的文档建议每个屏幕使用一个视图控制器。如果你有足够的理由去分析你的界面并在一个屏幕上使用多个视图控制器是可能的,但是苹果公​​司并没有真正设计出支持这个框架的框架,所以如果你不这样做,你会遇到陷阱知道你在做什么。

在这种情况下,我质疑网格中的每一行是否真的需要它自己的视图控制器。我发现很难想象这种情况是最好的选择,尽管如果不知道更多关于您的应用的信息,很难说。有些事情要考虑:

  • 你的自定义控制器在做什么?它是否主要改变其相应网格行的视觉外观?如果是这样,也许它更适合于UIView本身的子类。

  • 如果此对象实际上充当控制器而不是视图,请考虑将其作为NSObject的子类实现,而不是继承UIViewController的子类。用于屏幕的UIViewController可以捕获事件并将它们委托给适当的自定义控制器对象,或者您的自定义视图可以捕获它们自己的事件并直接使用委托模式通知其关联控制器这些事件。

  • 如果您确定自己有合理的理由将这些对象实现为UIViewController子类,请查看我对this问题的回答。