警报消息和按钮阵列

时间:2013-06-22 08:19:57

标签: iphone objective-c

我正在创建一个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)

无论如何绕过这个?

感谢。

1 个答案:

答案 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;
}