Subclassing UIAlertController
Asked Answered
L

2

9

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?

Lessielessing answered 3/6, 2014 at 14:20 Comment(0)
G
1

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.

Gilda answered 21/6, 2014 at 23:46 Comment(4)
I have given +1. However this is only because I have decided not to accept an answer until iOS8 is officially released. I hope when it is, this will have been confirmed and hopefully you will provide an up to date answer (If it is required)Lessielessing
Don't mean to intrude... but in relation to subclassing UIAlertController, I'm just after posting this question- any thoughts? https://mcmap.net/q/455435/-subclassing-uialertcontroller-and-encountering-runtime-errors/343343Rask
can sub-classing it cause App rejection?Improbity
in my experience anything can lead to a rejection. or not. you never know. But yes, a reviewer with a bad day might justify the rejection with this. or not. you never know.Gilda
Y
29

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.

Yeung answered 30/11, 2015 at 20:42 Comment(0)
G
1

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.

Gilda answered 21/6, 2014 at 23:46 Comment(4)
I have given +1. However this is only because I have decided not to accept an answer until iOS8 is officially released. I hope when it is, this will have been confirmed and hopefully you will provide an up to date answer (If it is required)Lessielessing
Don't mean to intrude... but in relation to subclassing UIAlertController, I'm just after posting this question- any thoughts? https://mcmap.net/q/455435/-subclassing-uialertcontroller-and-encountering-runtime-errors/343343Rask
can sub-classing it cause App rejection?Improbity
in my experience anything can lead to a rejection. or not. you never know. But yes, a reviewer with a bad day might justify the rejection with this. or not. you never know.Gilda

© 2022 - 2024 — McMap. All rights reserved.