閱讀您的意見後,我想知道......如果你的應用程序的結構,在邏輯上是一個標籤式的應用程序結構(如你確實把它稱爲一個「標籤欄應用程序」),你不應該考慮使用UITabViewController而不是NavigationController?畢竟,這是它設計的目的。
如果你做使用TabViewController你應該重新考慮你的翻頁動畫的願望,因爲這並不真正使標籤的UI感。如果你可以放棄翻頁動畫,TabViewController可能是一個很好的方法,你至少應該在解散這個想法之前進行實驗。它也被設計用於增長......您可以在選項卡欄中包含任意數量的選項卡。 Check out the apple docs (with pictures!)
您會注意到標籤位於屏幕的底部,而您的'標籤'navController按鈕位於屏幕頂部的導航欄中。隨着應用程序的增長,這也會有所幫助,因爲從UI設計的角度和編程方面來看,它很簡單 - 將navControllers作爲導航工具合併到各個選項卡中。例如,如果您的地圖/列表翻轉例程確實對您的應用的此部分有意義,則可以將其保存爲單個選項卡(在其自己的navigationController中),併爲該應用的其他部分添加其他選項卡...
更新
從你的評論,你說你有興趣在navController - 內 - tabBarController設置。在這種情況下,這裏有一些方法可以得到翻轉過渡和沒有後退按鈕..
(1)模式呈現 最簡單的方式得到你想要的是設置您的viewControllers之一(比如地圖視圖)以模態方式呈現另一個(列表視圖)。
如果故事板:
- 嵌入您的MapViewController在navController與導航欄按鈕,導航到ListView在您的圖片
- 您listViewController添加到故事板和嵌入它在它自己的navContoller (不是mapViewController的navController)。將barButtonItem拖動到此navController並將它連接到listViewController中的IBAction中。CTRL-從mapViewController的'list'按鈕拖動到listViewController以創建一個segue。選擇segue並在屬性檢查器中將segue類型設置爲'modal',並檢查轉換'水平翻轉'和'動畫'。給它一個名字,以防你想在代碼中引用它。
- 在listViewController的IBAction爲補充一點:
[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
這應該實現你的結果。您可以使用完成塊將信息從列表視圖發送回地圖視圖,和/或將地圖視圖設置爲listView的代表。
如果您使用的不是故事板檢查這個蘋果直營店
Presenting View Controllers from Other View Controllers
尤其是「呈現一個視圖控制器,並選擇一個過渡式」。
這種方法有一個問題 - 當呈現的視圖翻轉到屏幕上時,包括標籤欄在內的整個以前的視圖會被翻轉過來。這個想法是,這是一個模式視圖,其中用戶是要求要在應用程序中做任何其他事情之前解僱。
(2)PUSH/POP單一navController如果這個不適合你的意圖,你可以導航使用單一NavigationController向推送和意見爆裂,你可以隱藏後退按鈕。 ..但你真的需要保持後退按鈕的功能,因爲你想返回到mapView,而不是在到一個新的地圖視圖。
要隱藏後退按鈕嘗試:
self.navigationItem.hidesBackButton = YES
在最上面的viewControllers' viewDidLoad
然後你就可以添加一個barButtonItem在廈門國際銀行/故事板,用這種IBAction爲的:
[self popViewControllerAnimated:NO]
或
[self popToRootViewControllerAnimated:NO]
你將不得不構建代碼的翻轉動畫,因爲它是不支持作爲內置有UINavigationController的(最好留給作爲練習讀者!)
單一的viewController(3)交換意見作爲ghettopia曾建議,你可以使用一個navController內單一的viewController(或用手動方式將導航欄)和swap,周圍用UIView類方法
transitionFromView:toView:duration:options:animations:completion
transitionWithView:duration:options:animations:completion
兩種觀點。
這可能是一個很好的簡化解決方案,因爲您的列表和地圖本質上是同一數據模型的兩個視圖。
你好,他是。感謝您的回答,這是非常豐富的。目前還有其他幾個選項卡。我剛剛展示了應用程序早期階段的屏幕截圖。 其他標籤基本上用於其他任務,如儀表板,上傳圖片等,所以我使用的標籤。地圖和列表顯示相同的數據,只是在不同的方法,因此我沒有看到有一個選項卡的原因,因爲標籤用於完全不同的活動,它不是標準的應用程序會嗎? –
好的,翻轉動畫很好,不是最重要的。事情是如果我使用導航控制器。地圖頁面有一個列表按鈕。我點擊它,它會進入列表頁面。沒事兒。但是現在在列表頁面上,出現了一個我不想出現的後退按鈕。我想在該位置有一個按鈕,這對地圖和列表頁面都是通用的。在右側,我會看到一個按鈕,指出點擊地圖後會返回到地圖頁面。這可能嗎 ? 我希望我很清楚,並感謝您花時間幫助我。 –
@ShawnFrank,看到我更新的答案,希望對你有所幫助 – foundry