2016-12-18 2 views
1

У меня в настоящее время есть UIAlertController, который мне нужно сделать неустранимым. Предупреждение не следует отклонять при нажатии кнопки действия.Не упустите UIAlertController

Как я могу это сделать?

UIAlertController *alert; 

    int bestScore = [[[NSUserDefaults standardUserDefaults] objectForKey:@"bestScore"] intValue]; 
    if (!bestScore || bestScore < _score){ 
     [[NSUserDefaults standardUserDefaults] setObject:@(_score) forKey:@"bestScore"]; 
     alert = [UIAlertController alertControllerWithTitle:@"GAME OVER " 
                message:[NSString stringWithFormat:@"NEW RECORD! \n SCORE : %d \n\n\n\n\n\n", _score] preferredStyle:UIAlertControllerStyleActionSheet]; 
    } 
    else alert = [UIAlertController alertControllerWithTitle:@"GAME OVER" 
                 message:[NSString stringWithFormat:@"SCORE : %d \n Best score : %d \n\n\n\n\n\n ", _score, bestScore] preferredStyle:UIAlertControllerStyleAlert]; 

    [alert addAction:[UIAlertAction actionWithTitle:@"Try again" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
     [self newGame]; 
     [self addNewView]; 

    }]]; 


     [alert addAction:[UIAlertAction actionWithTitle:@"Answer" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
       [alert viewWillDisappear:NO]; 

      }]]; 
[self presentViewController:alert animated:YES completion:nil]; 

Пожалуйста, помогите!

+3

Вам нужно будет использовать/создать другую технику для отображения вашего сообщения. Контроллер предупреждения уволен, как только одна из его кнопок нажата. – Paulw11

+0

'UIAlertController' является системным' alert', вы не можете его изменить, я предлагаю вам написать 'custom alert'. – aircraft

ответ

1

Я бы рекомендовал создать UIViewController, содержащий UIView. В этом UIView вы сможете отображать необходимую информацию и добавлять пользовательские действия кнопок, которые вы хотите.

Для того, чтобы UIView отображался как модальный контроллер, добавьте UIVisualEffectView с UIBlurEffectStyle.

Это так же просто, как создание обычного контроллера вида, использующего вашу раскадровку/xib, добавив требуемый UIView в построитель интерфейсов, а затем связав соответствующий класс контроллера вида. После завершения начальной настройки и пользовательского интерфейса добавьте следующий код для просмотраDidLoad. Кроме того, вы можете выполнить необходимую анимацию и т. Д. В viewWillAppear & viewWillDisappear.

UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight] 
UIVisualEffectsView *blurView = [[UIVisualEffectView alloc] initWithEffect:effect]; 
[self.view insertSubview:blurView atIndex:0]; 
0

Вы можете сделать как этот

Если вы не хотите уволить alertController Вы можете отключающее действие кнопки него, как

alert.actions[1].enabled = NO 

Это сделаете alertController Non-dismissable.

Смежные вопросы