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

时间:2010-09-03 05:42:16

标签: iphone objective-c xcode

成为Xcode和Objective-C的新手我发现在执行遵循基本模式的事情时很难理解界面构建器和Objective-C。我已经创建了一个UIViewController的子类,我想多次实例化一个网格,每一行都由这个类的一个实例控制。因此,将有一个根视图控制器(带导航等),应该包含/生成自定义子视图控制器的所有实例。

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

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

Apple的文档建议每个屏幕使用一个视图控制器。如果你有充分的理由可以分解你的界面并在一个屏幕上使用多个视图控制器,但Apple并没有真正设计他们的框架来支持这一点,所以如果你不这样做,你会遇到陷阱知道你在做什么。

在这种情况下,我怀疑你的网格的每一行是否真的需要它自己的视图控制器。我发现很难想象这将是最好的选择,尽管如果不了解更多关于你的应用程序的话很难肯定。有些事情需要考虑:

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

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

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