繁体   English   中英

条形图按钮项仅在一个标签栏控制器导航栏中

[英]Bar Button Item in only one of the tab bar controller navigation bar

我有一个带有4个视图控制器的标签栏控制器,并在导航控制器中有这个标签栏控制器。

我想为标签栏控制器的一个特定视图控制器显示一个UIBarButtonItem。

我试着使用以下内容

if (tabBarController.selectedViewController == customTourViewController)
    {
        [tabBarController.navigationItem setRightBarButtonItem:done];
    }

但按钮没有显示出来。

如果我将每个视图控制器放在导航控制器中,则该按钮仅显示该视图,但最终我有2个导航栏。

有什么方法可以实现第一个解决方案吗? 谢谢。

在各个选项卡的各个视图控制器中,我在需要按钮的控制器中有以下内容:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                    style:UIBarButtonSystemItemDone target:nil action:nil];
    self.tabBarController.navigationItem.rightBarButtonItem = rightButton;
}

在不需要按钮的视图控制器中,我有:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.tabBarController.navigationItem.rightBarButtonItem = nil;
}

所以,如果它不适合你,我不确定它是否是你没有self指定的tabBarController的引用(如果我省略self我得到编译器错误)。 这段代码在哪里,因为如果它在你的self.navigationItem.rightBarButtonItem子类中,那么你想要self.navigationItem.rightBarButtonItem ,对吧? 您是否为该变量名定义了自己的ivar? 或者你确定done定义是正确的(即不是nil )? 或者您确定正在调用此代码(可能设置断点或插入NSLog并确保到达此代码)?

或者,您可以在需要按钮的同一视图中实现viewWillDisappear。

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];        
    self.tabBarController.navigationItem.rightBarButtonItem = nil;
}

上面接受的答案正是我所需要的,只是想将它转换为Swift以供将来使用。

我已将下面的代码添加到需要条形按钮的视图控制器中(我为此示例创建了一个添加按钮):

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

self.tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: nil)
}

在不需要此栏按钮的视图控制器中,只需添加以下代码即可

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

self.tabBarController?.navigationItem.rightBarButtonItem = nil
}

您使用viewWillAppearviewDidAppear因为您希望每次用户转到指定的视图控制器时都会显示条形按钮。

简单地说, viewDidAppear在运行时被调用一次,每次访问视图控制器时都会调用viewWillAppear

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM