在UITabBarController内的UINavigationController UINavigationBar上设置UISegmentedControll的正确方法

时间:2010-01-21 08:40:11

标签: iphone uinavigationcontroller uitabbarcontroller uisegmentedcontrol

标题几乎描述了这一切。

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

然而事实并非如此,我有3个非常不同的视图,允许基于NavigationControllers进一步深入挖掘/交互。

所以我设置ATM的方式是有一个“容器”类,我将所有UINavigationControllers放入。它们共享相同的和一个UISegmentedController,我将回调重定向到容器视图控制器。这根本不太好。

此外,当用户点击标签栏图标时出现问题,导航控制器弹出到root,即空容器视图。

以下是我想要实现的目标:

alt text http://img22.imageshack.us/img22/3076/picture1bk.png

2 个答案:

答案 0 :(得分:0)

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

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

如何使用一个NavigationController并在NavigationController.view上交换addSubview / removeFromSuperview?

答案 1 :(得分:0)

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

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

我对解决方案特别喜欢的是,它允许我将每个段的相应视图的代码分开,而不是在单个重载的视图控制器中混淆。

详细信息如下:UISegmentedControl Best Practice

好问题伙伴,希望有所帮助。