2013-06-22 4 views
0

Я создаю приложение 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

'', если что же это сделать? –

+0

Затем он должен вызвать предупреждающее сообщение –

+0

, метод принимает параметр и никогда не использует его !!! И какая строка дает вам ошибку ... Я не могу понять –

ответ

3

Блок, который вы используете, не имеет типа возврата, поэтому вы не можете вернуть значение BOOL. Вы должны использовать __block переменную вместо: (! = Кнопка button.enabled)

-(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; 
} 
+0

Спасибо, что это работает, но я думаю, что он всегда вернет тот же результат? Я продолжаю получать либо предупреждение о том, что обе кнопки включены, либо не включены, либо нет предупреждений о том, что для них нет предупреждения. –

+0

Вы можете изменить это, чтобы отладить, что происходит: 'if (button.enabled) {NSLog (@"% d enabled - stopping ", idx); result = YES; * stop = YES; } else {NSLog (@ "% d не включено", idx); } ' – Wain

+0

:) Замечательно! Спасибо. Есть ли манекены на этом материале? –