首页 文章

按下新视图控制器时,ios导航栏右键项目会移动

提问于
浏览
8

我有一堆三个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)可能与此相关 .

有关为什么会发生这种情况的任何想法?

2 回答

  • 0

    我有同样的问题 . 这是因为你没有设置rootviewcontroller . 设置主页面或第一个导航栏将作为rootviewcontroller发布的第一页 . 从那里[self.navcontroller] pushviewcontroller ...] .

  • 1

    试着打电话

    self.navigationItem.rightBarButtonItem = yourUIBarButtonItem;
    

    你的退出按钮是什么,它是正确的类吗?也许多一点代码?

相关问题