Button 禁用阵列中的导航按钮

Button 禁用阵列中的导航按钮,button,ios7,uinavigationbar,Button,Ios7,Uinavigationbar,我的UINavigationController右侧有两个按钮,按预期工作。这是我用来实现这一点的代码: // Share Button UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom]; [shareButton setFrame:CGRectMake(0,0,19,21)]; [shareButton addTarget:self action:@selector(shareButton) forCont

我的UINavigationController右侧有两个按钮,按预期工作。这是我用来实现这一点的代码:

// Share Button
UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom];
[shareButton setFrame:CGRectMake(0,0,19,21)];
[shareButton addTarget:self action:@selector(shareButton) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *shareBarButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(shareButton)] autorelease];
shareBarButton.tintColor = [UIColor whiteColor];

// Snapback Button
UIButton *navSnapbackButton = [UIButton buttonWithType:UIButtonTypeCustom];
[navSnapbackButton setFrame:CGRectMake(0,0,26,21)];
[navSnapbackButton setImage:[UIImage imageNamed:@"Snapback.png"] forState:UIControlStateNormal];
[navSnapbackButton addTarget:self action:@selector(snapbackButton) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *navSnapbackBarButton = [[[UIBarButtonItem alloc] initWithCustomView:navSnapbackButton] autorelease];
navSnapbackButton.tintColor = [UIColor whiteColor];

// Right Toolbar Button Setup
[self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:navSnapbackBarButton, shareBarButton, nil]];

我有一个简单的请求:如何禁用此数组中的按钮?例如,在一个特定的条件下,我希望禁用共享按钮,我将如何执行此操作?提前谢谢

不要将uiBarButtonim*shareBarButton的局部变量声明为@interface部分中的属性,以便您可以通过其他方法访问它:

@属性(强,非原子)UIBarButtonItem*shareBarButton

然后在工具栏设置例程中指定它,就像您所做的那样:

//共享按钮

shareBarButton=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAction目标:自操作:@selector(shareButton:)]

shareBarButton.tintColor=[UIColor whiteColor]

按钮的操作如下所示:

-(无效)共享按钮:(id)发件人{

}

然后在shareButton操作或其他方法中,您现在可以设置enabled属性:

self.shareBarButton.enabled=否

如果(…){

self.shareBarButton.enabled=是


}

Ann Taylor的回答非常好,我会这样做,但是如果您不想在视图中将此UIBarButton作为接口属性,您可以这样做:

UIBarButtonItem *btn1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(performAction:)];
btn1.tag = 0;
UIBarButtonItem *btn2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"_ui_image"] style:UIBarButtonItemStylePlain target:self action:@selector(performAction:)];
btn2.tag = 1;
self.navigationItem.rightBarButtonItems = @[btn1,btn2];
在禁用的方法中:

- (void)performAction:(id)sender
{
  NSArray *_barButtons = self.navigationItem.rightBarButtonItems;
  UIBarButtonItem *_barButton;
  for (_barButton in _barButtons) {
    if (_barButton.tag == 0) {
        _barButton.enabled = NO;
    }
  }
}  
一,