2

标题几乎描述了这一切。

问题在于 UISegmentedControll 回调(按钮按下)的处理。如果所有嵌套视图的内容类型相同(即一些 UITableViewControllers),那么我可以切换 dataSource'es 并重新加载表。

然而,情况并非如此,我在那里有 3 个非常不同的视图,允许基于 NavigationControllers 进行进一步的钻取/交互。

因此,我设置 ATM 的方式是有一个“容器”类,我将所有 UINavigationController 放入其中。它们都共享相同的一个 UISegmentedController,我将回调重定向到容器视图控制器。这感觉一点都不好。

此外还有一个问题,当用户点击标签栏图标时,导航控制器弹出到根目录,这是......空容器视图。

这是我想要实现的图片:

替代文字

4

2 回答 2

0

在我的一个应用程序中,我有一个由三个单独的 NSMutableArrays 的数据填充的表视图。我有条件地在 cellForRowAtIndexPath 中设置单元格内容,并有条件地在 numberOfRowsInSection 中获得 3 个不同的计数。虽然这不是您要寻找的具体内容,但您不需要像初始示例中所表达的那样拥有 3 个不同的数据源。

你的直觉是正确的。它似乎过于复杂。

使用一个 NavigationController 并在 NavigationController.view 上交换 addSubview/removeFromSuperview 怎么样?

于 2010-01-22T08:28:13.810 回答
0

我在最近的 iPad 应用程序中遇到了类似的功能要求,我使用的解决方案在以下链接中 - 本质上,我实现了一个“管理”视图控制器,它根据分段控件的选定索引添加/删除子视图,正确处理事件。

我通过将“管理”视图控制器作为参数传递给子视图视图控制器,并让这些控制器回调父视图以推送到导航堆栈上,从而解决了导航控制器问题。

我特别喜欢该解决方案的一点是,它让我可以将每个段的相应视图的代码分开,而不是在单个重载视图控制器中混乱。

详细信息在这里:UISegmentedControl 最佳实践

好问题,希望对你有帮助。

于 2010-05-24T01:37:30.453 回答