0

通常,当我制作我的应用程序时,我处于这种情况:我有一个 UINavigationController,处理视图堆栈,一些 UIViewControllers,控制它们各自的视图......

但是当我想在我的 mainView 中添加几个自定义 UIView 时,我不知道如何管理我的代码。

每个 UIViewController 需要处理一个且只有一个视图(通常占据所有屏幕大小),并且视图不应控制其内容(将其更新为极限)。你不能这样做:

[myViewController1.view addSubview:childViewController.view];

所以如果我想实现这样的目标,我该怎么办? 我的样机

橙色部分必须是相同 UIView(控制器?)的 3 个实例,但其内容取决于 NSObject(显然是用户)。

我认为这对您的内容进行细分非常重要,这应该是一个简单的问题,但是我发现了很多相互矛盾的答案,那么处理这个常见问题的最佳做法是什么?这些橙色视图应该是 UIViewControllers 的实例,以便它处理它们的 UITableViewDatasource?addChildViewController 在这种情况下是否相关?

我已经找到了很多有用的东西,但我不知道该怎么办......另外,我正在使用 xibs。

如果您能帮助我(以及我认为的其他人),请提前致谢。

4

4 回答 4

1

您可以通过任何一种方式(视图或视图控制器)执行此操作,具体取决于您要如何处理事情。当然,您可以将一个对象作为多个表的数据源,因此在这种情况下,您只需添加多个视图。然而,如果你想让你的代码更加分隔,那么添加视图控制器,并让每个控制器都有自己的视图——为此,你需要使用 addChildViewController,并使用 Apple 描述的用于创建自定义容器控制器的方法. 或者,您可以在故事板中使用容器视图,这使得创建自定义容器控制器的过程更简单。

于 2013-01-30T16:44:03.273 回答
0

您走在正确的道路上...创建子视图的单独实例,并将它们添加到您的视图中。如果你有超过 3 个(例如,想象一下你的音乐的封面视图,你可以无限左右滚动),我会看看 UICollectionViewController ...这将有助于管理单元格的重用。

但是,如果它只有 3 个,只需创建三个具有不同框架的实例并将它们添加到您的视图中。

于 2013-01-30T15:47:22.733 回答
0

这是我的做法:

每个橙色框都是一个自定义视图(继承自 UIView)

该视图将具有标签、图像和表格视图。

由于您不确定要使用的这些视图的实例数量,因此最好使用某种标记,这样您就可以在这些橙色视图中为数据源和表的委托方法提供一个位置。

在数据源和委托方法中,您可以使用 tableView.tag(与 orangeView.tag 属性相同)。

我个人不喜欢在一个视图中有多个 viewController(splitVC 除外),可能是因为我没有这样的要求。

我看不出橙色框的 uiviewcontroller 对 uiview 有何帮助。

正如@James Boutcher 在他的回答中提到的那样, UICollectionViews 将进一步简化这个问题。

于 2013-01-30T16:55:26.390 回答
0

为什么不创建一个 UIView 类并覆盖 drawRect 方法,然后在你的 myViewController1.view 中为这个类添加 subView

于 2013-01-30T16:56:51.820 回答