Я новичок в 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];
}