我是一位经验丰富的程序员,但对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 ]
实现此功能的最佳方法是什么?
答案 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提供视图控制器,而不仅仅是视图。
希望这有帮助!