【问题标题】:IOS UiBarButtoItemn is not removed when changing ViewController in UITabBarIOS UiBarButtoItemn在UITabBar中更改ViewController时没有被移除
【发布时间】:2015-05-06 22:29:39
【问题描述】:

我从 UIButton 以编程方式创建了 2 个 UIBarButtonItem。导航控制器位于 UITabBar 中。当我移动到同一个 UITabBar 中的另一个控制器时,这 2 个 UIBarButton 不会被删除。任何人都知道如何删除这 2 个 UIBarButtonItem

- (void)viewWillAppear:(BOOL)animated {

    // Left Tab Bar Items
    UIButton *fbutton = [[UIButton alloc] init];
    [fbutton setImage:[[UIImage imageNamed:@"ble"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
    [fbutton addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
    fbutton.frame=CGRectMake(0, 0, 48  , 48);
    UIBarButtonItem *fBLEItem = [[UIBarButtonItem alloc] initWithCustomView:fbutton];
    fBLEItem.enabled = NO;

    UIButton *tbutton = [[UIButton alloc] init];
    [tbutton setImage:[[UIImage imageNamed:@"ble"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
    [tbutton addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
    tbutton.frame=CGRectMake(0, 0, 48, 48);
    UIBarButtonItem *tBLEItem = [[UIBarButtonItem alloc] initWithCustomView:tbutton];
    tBLEItem.enabled = NO;

    self.tabBarController.navigationItem.leftItemsSupplementBackButton = YES;
    self.tabBarController.navigationItem.leftBarButtonItems = @[fBLEItem,tBLEItem];

}


- (void) viewWillDisappear:(BOOL)animated {

    [self.navigationItem setLeftBarButtonItem:nil animated:NO];
    [self.navigationItem setRightBarButtonItem:nil animated:NO];

}

【问题讨论】:

  • 别忘了[super viewWillDisappear:animated];[super viewWillAppear:animated];
  • 为了使您的代码更具可读性,请在每行的开头添加 4 个空格。这将帮助我们帮助您。
  • 何不只做:UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"ble"] style:UIBarButtonItemStylePlain target:self action:@selector(mySelector)];

标签: ios uinavigationcontroller uibarbuttonitem uitabbar


【解决方案1】:

您将UIBarButtonItem 设置为self.tabBarController.navigationItem,但随后将nil 设置为self.navigationItem。这是两个不同的东西。试试:

[self.tabBarController.navigationItem setLeftBarButtonItem:nil animated:NO]; 
[self.tabBarController.navigationItem setRightBarButtonItem:nil animated:NO];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多