Есть ли способ инкапсулировать UIAlertController в другой UIViewController?

Я новичок в iOS, поэтому, пожалуйста, отвечайте четко. Я играл с инкапсуляцией UIAlertController в другой UIViewController, чтобы использовать его в качестве замены UIActionSheet, поскольку он устарел в iOS 8.

Идея заключалась бы в замене UIActionSheet, который совместим с предыдущими и предыдущими версиями, например, назовите его ImmortalActionSheet.

Если компонент используется в iOS 8 или более поздней версии, он может использовать UIAlertController, иначе он вернется к UIActionSheet. Это сделало бы его обратно-совместимым листом действий, чтобы заменить многие листы действий вокруг приложения, с которым я работаю. И да, мне нужно поддерживать обратную совместимость.

Я сделал прототип этого, но по какой-то причине, когда я представляю ImmortalActionSheet, само представление UIAlertController всегда будет отображаться вверху слева (0, 0). Неважно, если я поменяю центр, он никогда не сдвинется.

-(void) loadView
{
     UIView * child = nil;
     if ( [UIAlertController class] )
     {
         UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"Make Choice!!" message:@"Choose one!" preferredStyle:UIAlertControllerStyleActionSheet];
         for (UIAlertAction * action in actions ){
             [alertController addAction:action];
         }

         child = alertController.view;
         [self addChildViewController:alertController];
     }

     self.view = [[UIView alloc] init];
     self.view.backgroundColor = [UIColor clearColor];
     [self.view addSubview:child];
}

UIAlertController перемещен в ошибочное положение


person Joey Carson    schedule 19.11.2014    source источник
comment
Уже существует аналогичная обратно совместимая оболочка, которая может вас заинтересовать: github.com/steipete/PSTAlertController.   -  person Michał Ciuba    schedule 19.11.2014
comment
› само представление UIAlertController всегда будет отображаться слева вверху (0, 0). - У вас есть образ этого?   -  person pkamb    schedule 20.11.2014
comment
Конечно, @pkamb. Отредактировал вопрос, чтобы показать скриншот. По сути, я заставляю UIAlertController создавать представление, а затем добавляю представление из него в качестве подпредставления моего UIController.   -  person Joey Carson    schedule 20.11.2014
comment
Я просто добавил аналогичный вопрос здесь: stackoverflow.com/questions/27028983/   -  person pkamb    schedule 20.11.2014
comment
Я создал класс ShowSystemAlert, который обрабатывает старые и новые версии предупреждений. Я задокументировал это здесь. wellgolly.com/?p=2010   -  person JScarry    schedule 20.11.2014