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 ...]。

相关问题