簡體   English   中英

按下新的視圖控制器時,ios導航欄的右鍵按鈕項將移動

[英]ios navigation bar right button item shifts when pushing new view controller

我有一堆通過導航控制器進行協調並利用導航欄的三個VC。 在此導航欄上,在每個VC中,我都添加了與右欄按鈕項相同的按鈕(“注銷”按鈕):

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的init方法,viewDidLoad和viewDidAppear中推VC之前,我曾嘗試添加按鈕,但仍然是相同的行為。 我似乎無法擺脫這一轉變。

奇怪的是,按下新VC(使用默認動畫)時,后退按鈕消失並重新出現(但使用默認動畫),但“注銷”按鈕似乎保留在原處,並且在動畫結束后僅向右移動。 另外,按鈕上的字體不是默認字體,而是系統字體之一(Helvetica light),可能與此有關。

為什么會這樣?

我有同樣的問題。 這是因為未設置rootviewcontroller。 將您的第一個導航欄所在的主頁或首頁設置為rootviewcontroller。 從那里[self.navcontroller] pushviewcontroller ...]。

嘗試致電

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem;

另外,您的登出按鈕是什么,是否是正確的課程? 也許更多的代碼?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM