Действие предупреждений iOS о кнопке
У меня есть кнопка в меню, которая при касании выскакивает предупреждающее сообщение с двумя кнопками: "Cancel
" а также "Yes
Msgs tr "Это код, который у меня есть для оповещения:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Exit game"
message:@"Are you sure?"
delegate:nil
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Yes", nil];
[alert show];
Можно ли добавить действие к кнопке?Yes
"?
3 ответа
В вашем коде установите делегат UIAlertView:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Exit game" message:@"Are you sure?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Yes", nil]; [alert show];
Поскольку вы установили делегат для себя, напишите функцию делегата в том же классе, как показано ниже:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 1) { // Set buttonIndex == 0 to handel "Ok"/"Yes" button response
// Cancel button response
}}
Вам необходимо реализовать UIAlertViewDelegate
и добавьте следующее...
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
// do stuff
}
}
Да, это легко. Видите этот аргумент под названием "делегат", который вы установили в ноль прямо сейчас? Установите это для объекта... обычно "self", если вы вызываете его из контроллера представления, а затем реализуете селектор для UIAlertViewDelegate.
Вы также должны объявить, что ваш контроллер представления соответствует протоколу UIAlertViewDelegate. Хорошее место для этого - в "приватном" классе продолжения контроллера представления.
@interface MyViewController() <UIAlertViewDelegate>
@end
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"Button pushed: %d", buttonIndex);
}