我希望在禁用后在Xcode中重新启用UIButton。当按下按钮时,我通过调用IBAction来禁用按钮。
- (IBAction)A0:(UIButton *)sender{
UIButton *enableButton = (UIButton *)sender;
enableButton.enabled = NO;
}
- (IBAction)B0:(UIButton *)sender{
UIButton *enableButton = (UIButton *)sender;
enableButton.enabled = NO;
}
// Lots more buttons
-(Void) reset {
//re-enable all buttons
}
我希望能够在调用重置方法时重新启用所有按钮
由于
答案 0 :(得分:2)
如果需要操作按钮等用户界面对象,请在视图控制器中创建IBOutlet属性,以管理对象并将对象链接到这些属性。完成后,您将能够使用属性来启用这样的按钮:
-(void) reset {
//re-enable all buttons
self.buttonA.enabled = YES;
self.buttonB.enabled = YES;
//...and so on
}
如果由于某种原因不想使用插座(例如,您有大量按钮,并且通常不需要对每个按钮的引用),您也可以考虑使用标签。每个视图都有一个整数tag
属性,您可以将其设置为您喜欢的任何值。可以在.xib / storyboard编辑器中设置标签。设置视图标记后,可以使用-viewWithTag:
方法在视图层次结构中轻松找到它。如果您使用标记,则-reset
方法将类似于:
-(void) reset {
//re-enable all buttons
[[self.view viewWithTag:kTagForButtonA] setEnabled:YES];
[[self.view viewWithTag:kTagForButtonB] setEnabled:YES];
//...and so on
}
其中kTagForButtonA
和kTagForButtonB
是与各个按钮上设置的标记匹配的整数常量。如果你有很多带有连续标签的按钮,你显然也可以使用for
循环来依次设置每个标签。
此外,看起来您的所有操作都完全相同 - 每个操作都会禁用发送邮件的按钮。如果是这种情况,您可以对所有按钮使用单个操作:
- (IBAction)buttonAction:(UIButton *)sender {
sender.enabled = NO;
}
答案 1 :(得分:0)
如果你有很多UIButton
个对象,并且按名称手动启用每个UIButton
对象是不可行的,你可以试试这个:
-(void)reset
{
for(UIView *currentView in [self.view subviews]) {
if ([currentView isKindOfClass:[UIButton class]]) {
[currentView setEnabled:YES];
}
}
}
这会将UIButton
和self.view
中的所有setEnabled:YES
个对象提供给他们(他们是否已经启用)