Создание подкласса UIAlertController

В пред-iOS 8 нам приходилось использовать UIAlertView и UIActionSheet

Что нам не разрешалось возиться с иерархией представлений или подклассами ни на одном из них.

UIAlertView Документация

Класс UIAlertView предназначен для использования как есть и не поддерживает создание подклассов. Иерархия представлений для этого класса является закрытой и не может быть изменена.

UIActionSheet Документация

UIActionSheet не предназначен для создания подклассов, и вы не должны добавлять представления в его иерархию. Если вам нужно представить лист с большей настройкой, чем предоставляется API UIActionSheet, вы можете создать свой собственный и представить его модально с помощью presentViewController:animated:completion:.

Однако в iOS8 Apple представила UIAlertController вместо UIAlertView и UIActionSheet (см. предварительную документацию здесь).

Таким образом, в этой предварительной документации нет ничего о невозможности создания подкласса или изменения иерархии представлений, в ней даже есть этот метод addTextFieldWithConfigurationHandler:, поэтому мы сможем изменить иерархию представлений и/или подкласс UIAlertController, не беспокоясь о том, одобрит ли Apple или отклонить наши заявки?


person Popeye    schedule 03.06.2014    source источник


Ответы (2)


Этот ответ устарел. Пожалуйста, обратитесь к ответу Лимона.


ViewController != View. Политика Apple не изменять внешний вид UIAlertView не влияет на контроллер представлений. Я не вижу причин, по которым вы не сможете создать подкласс UIAlertController. Но его использование может затруднить замену представления предупреждений на что-то специально созданное, поскольку представление предупреждений теперь создается только косвенно неподконтрольными вам классами. А для UIAlertView применяются те же правила, что и раньше.

person vikingosegundo    schedule 21.06.2014
comment
Я дал +1. Однако это только потому, что я решил не принимать ответ до официального выпуска iOS8. Я надеюсь, что когда это произойдет, это будет подтверждено, и, надеюсь, вы предоставите актуальный ответ (если это необходимо) - person Popeye; 23.06.2014
comment
Не хочу вторгаться ... но в отношении подкласса UIAlertController я сразу после публикации этого вопроса - есть мысли? stackoverflow.com/q/26935703/343343 - person VLostBoy; 14.11.2014
comment
может ли его подкласс вызвать отклонение приложения? - person Swasidhant; 14.05.2018
comment
по моему опыту все может привести к отказу. или нет. ты никогда не узнаешь. Но да, рецензент с плохим днем ​​может оправдать отказ этим. или нет. ты никогда не узнаешь. - person vikingosegundo; 14.05.2018

Это поздний ответ, но напрямую от Apple документы.

Класс UIAlertController предназначен для использования как есть и не поддерживает создание подклассов. Иерархия представлений для этого класса является закрытой и не может быть изменена.

Таким образом, вы не должны создавать подклассы UIAlertController.

person limon    schedule 30.11.2015