[英]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.