2011-12-20 53 views
1

我使用的導航控制器與n控制器的數量。阻止頂部和底部欄從動畫 - iPhone

現在,當從一個屏幕移動到另一個屏幕時,如果我按下控制器,頂欄和底欄也會轉變。

所以問題是否有任何方法,我可以防止頂部和底部酒吧的過渡。

N.B.頂部欄的內容是靜態的,但底部欄的內容會根據特定頁面中的要求而不斷變化。

任何幫助或建議將非常感激。

回答

1

使選項卡欄不是您的navigationcontroller視圖的一部分。

用視圖創建一個UIViewController。
在UIViewController中創建一個類型爲UINavigationController的實例變量。
爲UINavigationController隱藏導航欄。

集內容的UIViewController這樣

UIViewController  UIViewControllers content view setup. 
------------------- ------------------- 
|UIView   | |UINavigationBar | 
|     | |-----------------| 
|     | |UINavigationVi | 
|     | |ewController  | 
|     | |content view  | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |     | 
|     | |-----------------| 
|     | |UIToolBar  | 
------------------- ------------------- 

讓互動從網吧呼叫在UIViewController中,這在自己的回合與UINavigatioViewController相互作用的方法。

我希望這是有幫助和清楚的。

注意你現在的情況是這樣的:

UINavigationControllerViewController 
------------------- 
|view containing | 
|bars and current | 
|controller  | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
|     | 
------------------- 
+0

它工作正常。但唯一的問題是,現在我的原始控制器將保留在它的地方,內部控制器會導航,所以所有的視圖委託方法,如viewWillapar,didAppear,willDisappear將不會開火..現在我需要強制解僱他們。同樣在第二個圖像中,如果不使用UIViewController,我們使用UINavigation控制器,那麼我們不需要將所有innerView的** Y幀**設置爲從46開始而不是從0開始 – 2012-01-02 10:01:44

+0

我已經爲此解決方案創建了一個示例應用程序。查看代碼:https://github.com/stil4m/NavControllerNoBars。在這個解決方案中,您不必添加46像素的邊距,並且您擁有委託方法。在主視圖控制器中,您可以處理來自UINavigationController的委託調用。請閱讀存儲庫中的代碼。希望這可以解決問題。 – 2012-01-02 11:20:23

+0

感謝噸墊子,但主要是獲取viewWillAppear,DidAppear,消失方法得到調用..如果我們這樣做,哪些不會自動調用..即使您提供的示例沒有打電話viewwillAppear和剩餘意見委託方法:( – 2012-01-02 13:34:05

0

鑑於您的要求如上所述,我會使用的UINavigationController但使導航欄隱藏,並實現自己的標題欄的圖形(的UIView)和任何所需的按鈕。

[self navigationController].navigationBar.hidden = YES; 
+0

但是,它會如何阻止頂部欄的動畫效果?只有頂部和底部欄不能動畫,其餘整個視圖都需要動畫。 – 2011-12-20 14:28:38