8

我有一個三個VC通過導航控制器進行協調,並利用導航欄的堆棧。在此導航欄,在每個VC,我添加了相同的按鈕(「退出」按鈕),爲右欄按鈕項:ios導航欄右鍵按下項目時推動新視圖控制器

UIBarButtonItem *logoutButton = 
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"") 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(logout)]; 

[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton]; 
[[self navigationController] pushViewController:categoriesViewController animated:YES]; 

所以每個視圖控制器具有在導航欄此註銷按鈕。當我將這些控制器中的任何一個推到導航堆棧上時,新的視圖控制器按預期方式加載,所有內容都會顯示並正常運行,但在顯示新的視圖控制器後(動畫完成後),註銷按鈕將移動大約3px到對。

我已經嘗試添加按鈕之前推VC,在VC的init方法,在viewDidLoad和viewDidAppear但仍然是相同的行爲。我似乎無法擺脫這種轉變。

什麼奇怪的是,後退按鈕消失,並推動新的VC時(使用默認的動畫),但「退出」按鈕,似乎留在原地,只是轉移到右側的動畫完成後再次出現。此外,按鈕上的字體不是默認字體,而是系統字體之一(Helvetica燈),可能與此有關。

爲什麼會發生這種情況的任何想法?

+0

這是因爲我沒有使用默認字體。不知何故,當使用與屏幕不同的字體呈現按鈕時,其框架需要重新計算 - 或者這是我最好的猜測。 – 2012-08-02 08:30:33

+0

我有這個相同的問題 - 你最終修復它嗎? – 2012-08-24 19:11:59

回答

0

嘗試調用

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem; 

還有什麼是你的註銷按鈕,它是正確的類?也許多一點代碼?

1

我有同樣的問題。這是因爲你的rootviewcontroller沒有被設置。設置主頁面或首個導航欄將作爲rootviewcontroller發起的第一頁。從那裏[self.navcontroller] pushviewcontroller ...]。

相關問題