我正在创建一个iphone应用程序,在您可以转到下一页之前,您必须选择一个按钮或弹出警报。
.h
<UIAlertViewDelegate>
@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *buttons;
.m
-(BOOL)validateTag:(NSArray *)buttons {
[self.buttons enumerateObjectsUsingBlock:^(id obj) {
UIButton *button = (UIButton *)obj;
if (button != button.enabled){
return NO;
}
return YES;
} ];
}
-(IBAction)save:(id)sender{
if (![self validateTag:_buttons]) {
[self alertMessage:@"Invalid ":@"Please choose a Tag"];
return;
}
else {
....显示其他viewcontroller
}
我得到的错误是
`Incompatible pointer types sending bool to parameter of type void`
在线
[self.buttons enumerateObjectsUsingBlock:^(id obj)
无论如何绕过这个?
感谢。
答案 0 :(得分:3)
您正在使用的块没有返回类型,因此您无法从那里返回BOOL值。您应该使用__block
变量:
-(BOOL)validateTag:(NSArray *)buttons
{
__block BOOL result = NO;
[self.buttons enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIButton *button = (UIButton *)obj;
if (button.enabled) {
result = YES;
*stop = YES;
}
}];
return result;
}