有没有办法将UIAlertController封装在另一个UIViewController中?

时间:2014-11-19 15:07:01

标签: ios backwards-compatibility uialertcontroller forward-compatibility

我对iOS很新,所以请保持清楚的答案。我一直在用另外的UIViewController封装UIAlertController来使用它作为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 moved to a buggy position

0 个答案:

没有答案