2011-05-06 61 views
4

有沒有一種方法可以在導航控制器中通過視圖進行過渡而不需要標題動畫?UINavigationController動畫視圖但不包含標題

我正在創建一個應用程序,詢問用戶問題,當他們點擊下一個新問題時將其推入NavigationStack並進行動畫。但標題欄也是動畫。標題欄上的標題不會改變,所以有沒有辦法阻止標題欄動畫?

感謝

回答

0

你可以使用一個分頁UIScrollView,而不是UINavigationController。在視圖頂部設置UINavigationBar並在右下方放置UIScrollview,在IB中設置視圖,讓用戶通過這種方式滾動查看問題。

+0

我沒有想過分頁的UIScrollView,我已經使用UINavigationController構建了我的大部分應用程序,所以它現在已經太遲了以至於無法改變它,但是要記住未來。 – 2011-05-06 15:59:43

0

您可以用停止動畫:

// Pass the selected object to the new view controller. 
[self.navigationController pushViewController:detailViewController animated:NO]; 

,並確保您設置標題爲推視圖控制器(同一)正確的標題;例如在詳細視圖控制器的viewDidLoad方法做:現在

self.title = @"title"; 

,你可以添加自定義initWithTitle:法說,給你詳細視圖控制器自定義類來傳遞的標題,你需要如果標題需要更改設置,不像你提到你的問題。

希望這會有所幫助。

+0

設置標題不是問題,我在每個viewController中設置標題。這個不會改變,並且對於導航樹中的所有viewController都是一樣的。我想要做的就是停止標題動畫,並且只要將視圖推到/從堆棧中拖拽到視圖中,就可以對視圖進行動畫處理。 – 2011-05-06 15:47:48

+0

呃,它不應該工作?如果您將* animated *設置爲「NO」,將您的詳細視圖控制器(如代碼片段)推送,則如果確保標題字段相同,則不會生成動畫。我會嘗試找到我用來測試這個的我的骨架項目。 – petert 2011-05-06 16:03:14

+0

當_animated_設置爲NO時,沒有任何動畫。我仍然希望將主視圖設置爲動畫,我只是希望標題不要動畫。 – 2011-05-06 16:23:31

0

我有同樣的問題(在我的情況,我對每個孩子相同的標題,我添加到導航控制器所以動畫標題看起來很滑稽)

我解決了這個由直接添加標題導航控制器,並設置子控制器的標題爲零

UINavigationController *nav_controller; 

UILabel *lbl_title = [[UILabel alloc] initWithFrame:...] 
// Modify your title here 

[nav_controller.view addSubview:lbl_title]; 

UIViewController *vc_child; 
vc_child.title = nil; 
0

我不認爲有任何直接的解決方案來解決這個問題。但我覺得它是可以實現的。你可以有一個導航控制器。當您從導航控制器中推入下一個視圖時,您可能需要避開一些自定義動畫。

你可以做什麼,我覺得是,你可以在一幀作爲子視圖添加下一個圖,其中

x = 350(anything beyond the view frame i.e 320, assuming iphone) , 
y = 0 , 
width = 320 and 
height = view height - 20 (20 is the height of navigation bar) 

你可以添加你的下一個視圖作爲一個子視圖到現有的導航控制器,而不是推的觀點從導航控制器中提供一些自定義動畫,同時將x值從350更改爲0.

這看起來像是在推動視圖,但您只是通過添加子視圖來創建效果。

希望這可能會給你的解決方案。

相關問題