Ios 不同子视图之间的iPad导航
我是一名经验丰富的程序员,但对iOS/ObjC来说还是相当陌生的。我需要在现有的iPad应用程序中添加一个功能,但我不知道该怎么做 该应用程序有一个视图(我们称之为InfoView),其中有几个子组件,其中一个是tableview(tableview),两个是按钮(ButtonA和ButtonB)(以及其他与此问题无关的内容) 当按下按钮B时,TableView需要被其他一些打开了各种项目的视图(我们称之为DetailViewA)替换。(ButtonA将我们带回TableView-这些按钮的作用类似于伪选项卡按钮)当选择DetailViewA中的一个项目时,DetailViewA需要替换为DetailViewB。当DetailViewB关闭时,detailViewA应重新出现 我相信我可以在按下ButtonA/ButtonB时通过简单地隐藏适当的按钮在TableView和DetailViewA之间切换,但我不知道如何很好地处理深入到DetailViewB并再次备份(最好是使用一些滑动动画)-我想也许我可以使用UINavigationController来实现这一点,但是经过一些研究,我仍然不知道如何在子视图中嵌入UINavigationController 一张图片能表达千言万语,下面是我对我所说内容的粗略描述:Ios 不同子视图之间的iPad导航,ios,objective-c,ipad,user-interface,Ios,Objective C,Ipad,User Interface,我是一名经验丰富的程序员,但对iOS/ObjC来说还是相当陌生的。我需要在现有的iPad应用程序中添加一个功能,但我不知道该怎么做 该应用程序有一个视图(我们称之为InfoView),其中有几个子组件,其中一个是tableview(tableview),两个是按钮(ButtonA和ButtonB)(以及其他与此问题无关的内容) 当按下按钮B时,TableView需要被其他一些打开了各种项目的视图(我们称之为DetailViewA)替换。(ButtonA将我们带回TableView-这些按钮的作用
+--------------------------------------------------------------------------+
| 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) | |
或层级:([]表示不确定性/未实施)
实现此功能的最佳方法是什么?您可以使用在视图中嵌入导航控制器。使用DetailViewA控制器作为根视图控制器设置导航控制器,然后调用以下代码嵌入导航控制器:
[self addChildViewController:self.detailNavigationController];
self.detailNavigationController.view.frame = frameOfTableView;
[self.view addSubview:self.detailNavigationController.view];
[self.detailNavigationController didMoveToParentViewController:self];
按下按钮时,您将隐藏原始表格视图并显示导航控制器。导航控制器随后将处理细节视图之间的“向下钻取”
请注意,DetailViewA和DetailViewB需要视图控制器,而不仅仅是视图
希望这有帮助
[self addChildViewController:self.detailNavigationController];
self.detailNavigationController.view.frame = frameOfTableView;
[self.view addSubview:self.detailNavigationController.view];
[self.detailNavigationController didMoveToParentViewController:self];