Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Subclassing UIAlertController

With pre-iOS 8 we had to use the UIAlertView and UIActionSheet

Which we weren't allowed to mess with the view hierarchy or subclass on either them.

UIAlertView Documentation

The UIAlertView class is intended to be used as-is and does not support subclassing. The view hierarchy for this class is private and must not be modified.

UIActionSheet Documentation

UIActionSheet is not designed to be subclassed, nor should you add views to its hierarchy. If you need to present a sheet with more customization than provided by the UIActionSheet API, you can create your own and present it modally with presentViewController:animated:completion:.

However with iOS8 Apple have introduced UIAlertController to replace both UIAlertView and UIActionSheet (Check the pre-release documentation here).

So in this pre-release documentation there is nothing about not being able to subclass or change the view heirarchy, it even has this method addTextFieldWithConfigurationHandler: so will we be able to change the view heirarchy and/or subclass UIAlertController without worrying whether Apple will approve or reject our applications?

like image 244
Popeye Avatar asked Jun 03 '14 14:06

Popeye


People also ask

What is UIAlertController?

An object that displays an alert message.

How do you dismiss an alert controller in Swift?

You can dismiss the alert by calling dismissViewControllerAnimated method on alertController object.

How do I create an alert view in Swift?

To create an action button that the user can tap on, we will need to create a new instance of an UIAlertAction class and add it to our alert object. To add one more button to UIAlertController simply create a new UIAlertAction object and add it to the alert.


2 Answers

It's a late response, but directly from Apple docs.

The UIAlertController class is intended to be used as-is and does not support subclassing. The view hierarchy for this class is private and must not be modified.

So, you shouldn't subclass UIAlertController.

like image 145
limon Avatar answered Oct 09 '22 11:10

limon


This answer is outdated. Please refer to limon's answer.


ViewController != View. Apple's policy of not changing the appearance of an UIAlertView does not affect the presenting view controller. I see no reason why you shouldn't be able to subclass the UIAlertController. But using it may be making it harder to replace the alert view with something custom grown, as the alert view is now only created indirectly by classes out of your control. And for UIAlertView same rules applies as before.

like image 23
vikingosegundo Avatar answered Oct 09 '22 10:10

vikingosegundo