不同子视图之间的iPad导航



我是一名经验丰富的程序员,但对iOS/ObjC相当陌生。我需要为现有的iPad应用程序添加一个功能,但我不知道该怎么做

该应用程序有一个包含多个子组件的视图(我们称之为InfoView),其中一个子组件是表视图(tableview),两个子组件是按钮(按钮a和按钮B)(以及其他与此问题无关的东西)。

当按下按钮B时,TableView需要被打开了各种项目的其他视图(我们称之为DetailViewA)所取代。(按钮A将我们带回TableView-这些按钮的作用类似于伪选项卡按钮)当DetailViewA中的一个项目被选中时,DetailViewA需要被DetailViewB所取代。当DetailViewB关闭时,detailViewA应重新出现。

我相信我可以通过在按下按钮a/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 ]

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

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

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

按下按钮时,您将隐藏原始表格视图,并显示导航控制器。然后,导航控制器将处理局部视图之间的"向下钻取"。

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

希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新