2013-02-13 1 views
1

Я и мой приятель работают над приложением, мы полные новички, но прошли долгий путь с книгами и очками.Вызов IBaction в alertView, если оператор

Мы застряли на этой штуке. У нас есть куча texfields, с которой у нас есть четкая кнопка, связанная с ней, но тогда мы хотим, чтобы это действие вызывалось, если вы нажмете «Да» на одной из кнопок просмотра предупреждения.

- (IBAction)clearText:(id)sender { 

Spelare1Slag1.text = @""; 
Spelare1Slag2.text = @""; 

}

Мы также имеем этот вид предупреждения:

 alertDialog = [[UIAlertView alloc] 
    initWithTitle: @"Warning" 
    message: @"Do you want to delete?" 
    delegate: self 
    cancelButtonTitle: @"No" 
    otherButtonTitles: @"Yes", nil]; 

- (void)alertView: (UIAlertView *)alertView 
clickedButtonAtIndex:(NSInteger)buttonIndex { 
    NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex]; 
    if ([buttonTitle isEqualToString:@"No"]) { 
    } 

    else if ([buttonTitle isEqualToString:@"Yes"]){ 
     Spelare1Slag1.text = @""; 
    } 

}

Так это, как мы думаем, что мы должны это делать, но мы не знаем, что положить в оператор else if. Мы хотим, чтобы текстовые поля были очищены, когда вы нажимаете кнопку «да» в режиме предупреждения, а не когда вы нажимаете «нет»

Заранее благодарите!

ответ

2

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

- (void)clearText { 
Spelare1Slag1.text = @""; 
Spelare1Slag2.text = @""; 
} 

Теперь все, что вам нужно сделать в методе UIAlertView делегата, это вызов читаемых метод:

- (void)alertView: (UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex]; 
    if ([buttonTitle isEqualToString:@"Yes"]){ 
     [self clearText]; 
    } 
} 

Надеется, что это помогает

+0

Это выглядит многообещающим, я буду смотреть на него завтра, им не дома atm! – Laymachine

+0

Решил, спасибо! – Laymachine

2

Вы можете отклонить AlertView в случае, если пользователь нажал NO Если я правильно понял вопрос.

Вы можете отклонить alertview как этот

[alertView dismissWithClickedButtonIndex:0 animated:YES]; 

, но убедитесь, чтобы увидеть, если NO имеет индекс 0 или 1, если вы не уверены, то просто сделать, как этот

[alertView dismissWithClickedButtonIndex:nil animated:YES]; 
1

Способы типа IBAction как и любой другой метод, и вы можете напрямую их называть в своем коде. Фактически, IBAction - это просто макрос, оценивающий до void. Обычно вы передаете аргумент отправителя nil, когда его нужно вызывать вне контекста запускаемого события/события.

[self clearText:nil]; 
1

Зачем вам нужно проверить текст кнопки? Проверка индекса кнопки - наиболее эффективный способ перехода. Если у вас есть два поля в вашем alertView, просто проверьте, равен ли индекс 0 или 1 и ваш товар хорош. Вы выполняете дополнительную работу, проверяя фактический текст.

И, кстати, просто сделайте чек для индекса кнопки YES, если вам не нужно ничего делать, когда они нажимают no. (Не проверяйте оба индекса, если вам это не нужно).