2015-02-12 2 views
6

Версии iOS до 8 позволили мне создать UIActionsheet, который отобразит группу кнопок, некоторое пространство и кнопку отмены. Что-то вроде этого:Покажите пробел ниже действий в UIAlertController

Desired Behavior

Однако в прошивкой 8, когда я пытаюсь создать тот же вид, я в конечном итоге с чем-то, что выглядит следующим образом:

iOS 8 Behavior

код, в прошивкой 8 выглядит следующим образом:

UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; 

[alertVC.view setTintColor:[UIColor copperColor]]; 

UIAlertAction* notifyViaPush = [UIAlertAction 
         actionWithTitle:@"Send Alert to my phone" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          [alertVC dismissViewControllerAnimated:YES completion:nil]; 
         }]; 
UIAlertAction* notifyViaEmail = [UIAlertAction 
         actionWithTitle:@"Notify me by email" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          [alertVC dismissViewControllerAnimated:YES completion:nil]; 
         }]; 
UIAlertAction* cancel = [UIAlertAction 
           actionWithTitle:@"Cancel" 
           style:UIAlertActionStyleCancel 
           handler:^(UIAlertAction * action) 
           { 
            [alertVC dismissViewControllerAnimated:YES completion:nil]; 
           }]; 

[alertVC addAction:notifyViaPush]; 
[alertVC addAction:notifyViaEmail]; 
[alertVC addAction:cancel]; 

[self presentViewController:alertVC animated:YES completion:nil]; 

Как я группа мои кнопки и может иметь некоторое пространство между действиями и кнопкой отмены с помощью UIAlertController?

ответ

9

Ошибка alertVC.view.tintColor = [UIColor copperColor]; вызывает проблему, это делает весь вид контроллера предупреждений одного и того же цвета, на первом снимке кнопка отмены имеет белый фон. Чтобы исправить это, переместите эту строку в конец функции, то есть после того, как вы добавили все действия.

+0

Это устраняет проблему! Можете ли вы помочь мне понять, почему настройка цвета оттенков приводит к тому, что весь вид в итоге группируется вместе? – nixterrimus

+1

Для этого вам нужно подклассифицировать UIAlertController, старый стиль: >, <_UIAlertControllerActionView: 0x7fa73bdaf120; frame = (0 96, 359 44); Action = >, он имеет промежуток в 12pt, который является четким цветом, установка tintcolor ранее, похоже, заставляет пропасть исчезать, новый стиль имеет коллекцию с 3 ячейками, каждая высота равна 44. – gabbler

+1

Старый стиль имеет коллекцию с двумя ячейками, и я не уверен, как это произошло. Вы можете расследовать больше, чтобы получить объяснение. – gabbler

4

Для меня это сработало, когда я установил стиль UIAlertActionStyleCancel на UIAlertAction.

Код action является объектом UIAlertAction и controller является UIAlertController со стилем.

UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { 
      self.tabBarView.selectedIndex = 1; 
      [self.tabBarView setSelectedIndex:self.tabBarView.selectedIndex]; 
     }]; 
     [controller addAction:action]; 
     [controller addAction:action2];