iPad在不同子视图之间导航

时间:2014-04-14 08:58:01

标签: ios objective-c ipad user-interface

我是一位经验丰富的程序员,但对iOS / ObjC来说还算新手。我需要在现有的iPad应用程序中添加一项功能,而且我不知道该怎么做。

该应用程序有一个视图(让它称之为InfoView)有几个子组件,其中一个是tableview(TableView),其中两个是按钮(ButtonA和ButtonB)(加上其他的东西,&#39)与这个问题无关。)

当按下ButtonB时,需要将TableView替换为其他视图(让我们称之为DetailViewA),其中包含各种项目。 (ButtonA将我们带回TableView - 这些按钮就像伪标签按钮一样)当选择DetailViewA中的一个项目时,DetailViewA需要被DetailViewB替换。当DetailViewB关闭时,detailViewA应该重新出现。

我相信只要在按下ButtonA / ButtonB时隐藏适当的一个,我就可以在TableView和DetailViewA之间切换,但我不知道如何很好地处理深入到DetailViewB并再次备份(最好一些滑动动画) - 我想也许我可以用UINavigationController做到这一点,但经过一些研究后我仍然无法看到我如何在子视图中嵌入UINavigationController。

一张图片讲述了千言万语,所以这里是我所谈论的粗略草图:

+--------------------------------------------------------------------------+
|           InfoView                 |                TopView              |
|     [ButtonA]      [ButtonB]       |                                     |
|    (show table)  (show detail)     |                                     |
| ---------------------------------- |                                     |
|                                    |                                     |
|   this area contains TableView     |                                     |
|                                    |                                     |
|   when ButtonB is touched this     |           other stuff here          |
|   needs to display DetailViewA     |                                     |
|   with the ability to drill down   |                                     |
|   deeper to DetailViewB  (and      |                                     |
|      maybe deeper)                 |                                     |

或等级:( []表示不确定/未实现)

TopView
\ InfoView
   \ ButtonA
   | ButtonB
   | TableView           - Shown when ButtonA pressed
   | [ MoreInfoView? ]   - Shown when ButtonB pressed
      \ [ DetailViewA ]
      | [ DetailViewB ]

实现此功能的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用child view controllers在视图中嵌入导航控制器。使用DetailViewA的控制器设置导航控制器作为根视图控制器,然后调用此代码嵌入导航控制器:

[self addChildViewController:self.detailNavigationController]; 
self.detailNavigationController.view.frame = frameOfTableView;
[self.view addSubview:self.detailNavigationController.view];
[self.detailNavigationController didMoveToParentViewController:self];  

按下按钮时会隐藏原始表格视图并显示导航控制器。然后导航控制器将处理"向下钻取"在详细视图之间。

请注意,您需要为DetailViewA和DetailViewB提供视图控制器,而不仅仅是视图。

希望这有帮助!