2013-12-04 1 views
-1

Не уверен, правильно ли сформулировал этот вопрос. Есть ли способ, чтобы индекс кнопки, выбранный в UIAlertView, возвращался к методу, в котором был запущен UIAlertView?Делегация UIAlertView - указатель кнопки возврата к вызову

Так

- (void) someMethod { 

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Confirm Adding Product" message:Blah, blah, blah" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Yes", @"No", nil]; 
    [alert show]; 

//some more code - I'd like to get the button index returned here! 

} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

    //anyway to return this to the method above? 
    if (buttonIndex == 0) { 
    } 

} 
+0

Нет, именно поэтому мы используем делегирование, делегировать определенную задачу на другой метод/место. Что вы пытаетесь выполнить в 'someMethod', который вы не можете сделать в методе делегата? –

+1

Передайте значение третьему методу ... – PruitIgoe

ответ

0

Нет, вы не можете «вернуться» ничего к методу, который показал предупредительный вид, потому что метод завершения выполнения. Если вы хотите выполнить действие с определенным нажатием кнопки, вызовите новый метод.

if (buttonIndex == 0) { 
     [myclass someNewMethod]; 
    } 
0

Вы можете использовать удобные категории UIAlertView + BlocksKit.h от BlocksKit

- (void) someMethod { 

    [UIAlertView bk_showAlertViewWithTitle:@"Title" 
            message:@"Message" 
         cancelButtonTitle:@"OK" 
         otherButtonTitles:nil 
            handler:^(UIAlertView *alertView, NSInteger buttonIndex) { 

             // Use buttonIndex in someMethod's context: 
             NSLog(@"Pressed button at index %d", buttonIndex); 

            }]; 
}