我有一堆三个VC,通过导航控制器协调并使用导航栏。在此导航栏上,在每个VC中,我添加了相同的按钮(一个' Logout'按钮)作为右侧栏按钮项:
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(使用默认动画)时,后退按钮会消失并重新出现,但是“退出”按钮会消失。按钮似乎保持原位,并在动画结束后向右移动。此外,按钮上的字体不是默认字体,但系统字体之一(Helvetica light)可能与此相关。
有关为何发生这种情况的任何想法?
答案 0 :(得分:1)
我遇到了同样的问题。这是因为你没有设置rootviewcontroller。设置主页面或第一个导航栏将作为rootviewcontroller发布的第一页。从那里[self.navcontroller] pushviewcontroller ...]。
答案 1 :(得分:0)
尝试拨打
self.navigationItem.rightBarButtonItem = yourUIBarButtonItem;
你的退出按钮是什么,它是正确的类吗?或许多一点代码?