我使用两个按钮和一个文本字段创建一个uialertview,如果textfield为空,我想要禁用“Ok”按钮。如何获取uibutton对象,更改是启用状态。
答案 0 :(得分:11)
您可以使用从UIControl
继承的enabled
属性:
for(UIView *view in alertView.subviews) {
if([view isKindOfClass:[UIButton class]]) {
((UIButton *) view).enabled = NO;
}
}
为了可重用性,当NSArray
上有一个检索给定类对象的类别时,这变得更加简单:
@implementation NSArray (JRAdditions)
- (NSArray *)objectsOfClass:(Class)cls {
NSParameterAssert(cls);
NSMutableArray *array = [@[] mutableCopy];
for(id obj in self) if([obj isKindOfClass:cls]) [array addObject:obj];
return [array copy];
}
@end
您的代码现在看起来像这样:
[[alertView.subviews objectsOfClass:[UIButton class]] enumerateObjectsUsingBlock:^(UIButton *obj, NSUInteger index, BOOL *stop) {
obj.enabled = NO;
}];
答案 1 :(得分:0)
从iOS 5开始,您可以在UIAlertViewDelegate实例中执行此操作。
-(BOOL) alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
return [[alertView textFieldAtIndex:0].text length] > 0;
}