簡體   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