繁体   English   中英

iPad在不同子视图之间的导航

[英]iPad Navigation between different subviews

我是一位经验丰富的程序员,但对iOS / ObjC来说还很陌生。 我需要在现有的iPad应用程序中添加功能,但不确定如何操作。

该应用程序具有一个带有几个子组件的视图(我们称为InfoView),其中一个子组件是一个表格视图(TableView),其中两个是按钮(ButtonA和ButtonB)(以及与此问题无关的其他东西)。

按下ButtonB时,需要将TableView替换为其他视图(将其称为DetailViewA),并将其放在各种项目上。 (ButtonA将我们带回到TableView-这些按钮的作用类似于伪选项卡按钮)选择DetailViewA中的一项时,需要用DetailViewB替换DetailViewA。 当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 ]

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

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

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

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

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

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM