6

当推动视图控制器时,我的工具栏按钮会淡出,然后再次使用新视图。问题是我在下一个视图中的按钮与上一个视图相同,因此看起来按钮在切换屏幕时会快速闪烁。我的问题是,是否可以通过在推送到新视图时禁用导航控制器的工具栏按钮的淡出来避免这种情况,或者工具栏是否可以以对所有视图都相同的方式绑定到导航控制器。自从我看到我的导航栏按钮在按下新屏幕时不会淡出后的最后一个建议。

4

3 回答 3

1

我很惊讶没有人回答你。我刚刚遇到了这个问题,这是我找到的解决方案。

  1. 子类化您的导航控制器

  2. 覆盖您的推送/弹出方法

-(UIViewController*)popViewControllerAnimated:(BOOL)animated
{
    self.navigationBarHidden = YES;
    UIViewController *vc = [super popViewControllerAnimated:animated];
    self.navigationBarHidden = NO;
    return vc;
}

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    self.navigationBarHidden = YES;
    [self pushViewController:viewController animated:animated];
    self.navigationBarHidden = NO;
}

它对我有用。

于 2014-05-26T04:05:50.020 回答
1

我知道这个问题很老,但有一个简单的解决方案:将两个控制器的导航项设置为同一个栏按钮项,它不会动画。例如:

UIBarButtonItem* item = [[UIBarButtonItem alloc] initWith...];
viewController1.rightBarButtonItem = item;
viewController2.rightBarButtonItem = item;

如果您现在在显示 viewController1 后推送 viewController2,导航项将不会动画。

于 2017-10-09T14:57:25.710 回答
0

对于在代码中构建工具栏,我认为它应该在 ViewWillAppear 生命周期方法中。我之前在代码中构建了一个工具栏,但在 ViewDidLoad 中,我看到了这个快速淡入/淡出

于 2019-09-15T05:21:37.007 回答