簡體   English   中英

禁用RightBarButtonItems

[英]Disabling RightBarButtonItems

我的viewController充當容器,並具有自己的UINavigationBar。 它不在導航控制器中。 我的導航欄項目設置如下:

self.navigationItem.leftBarButtonItems = leftItems;
self.navigationItem.rightBarButtonItems = @[logout, settings];
[self.navBar setItems:@[self.navigationItem]];

在應用程序的各個位置,此導航欄被鎖定,直到用戶完成任務為止。 此代碼段可用於切換導航欄中按鈕的enabled屬性,但只能在leftBarButtonItems上! 為什么?

for(UIBarButtonItem *rightButton in self.navigationItem.rightBarButtonItems){
     [rightButton setEnabled:!rightButton.enabled];
}
for(UIBarButtonItem *leftButton in self.navigationItem.leftBarButtonItems){
     [leftButton setEnabled:!leftButton.enabled];
}

更新:

我已經創建了一個測試演示,它運行良好。 這是sreenshot和代碼,希望對您有所幫助!

在此處輸入圖片說明在此處輸入圖片說明

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property(nonatomic,strong) UINavigationItem * navItem;
@property(nonatomic,assign) IBOutlet UINavigationBar * navBar;

@end

ViewController.m

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIBarButtonItem* barItem1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(barItemClicked:)];
    UIBarButtonItem* barItem2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(barItemClicked:)];
    UIBarButtonItem* barItem3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(barItemClicked:)];
    UIBarButtonItem* barItem4 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(barItemClicked:)];
    self.navItem = [[UINavigationItem alloc] init];
    self.navItem.leftBarButtonItems = @[barItem1,barItem2];
    self.navItem.rightBarButtonItems = @[barItem3,barItem4];
    [self.navBar setItems:@[self.navItem]];

}
- (IBAction)anableSwitch:(id)sender{
    UISegmentedControl * swith = (UISegmentedControl *)sender;

    for(UIBarButtonItem *rightButton in self.navItem.leftBarButtonItems){
        [rightButton setEnabled:(swith.selectedSegmentIndex == 0)];
    }
    for(UIBarButtonItem *leftButton in self.navItem.rightBarButtonItems){
        [leftButton setEnabled:(swith.selectedSegmentIndex == 0)];
    }
}
- (void)barItemClicked:(id)sender{
    NSLog(@"barItemClicked");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM