在iOS 8之前,我们必须使用UIAlertView
和UIActionSheet
我们不允许弄乱它们的视图层次结构或子类。
UIAlertView类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。
UIActionSheet不是为子类设计的,也不应该在其层次结构中添加视图。如果您需要提供比UIActionSheet API提供的更多自定义的工作表,您可以创建自己的工作表并使用presentViewController以模态方式呈现它:animated:completion:。
然而,对于iOS8,Apple已引入UIAlertController
来替换UIAlertView
和UIActionSheet
(请查看预发布文档here)。
因此,在这个预发布文档中没有任何关于无法继承或更改视图层次结构的信息,它甚至有这个方法addTextFieldWithConfigurationHandler:
所以我们能够更改视图层次结构和/或子类{ {1}}无需担心Apple会批准还是拒绝我们的申请?
答案 0 :(得分:29)
这是一个迟到的回复,但直接来自Apple docs。
UIAlertController类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。
所以,你不应该是UIAlertController的子类。
答案 1 :(得分:1)
此答案已过时。请参阅limon's answer。
ViewController != View
。 Apple不改变UIAlertView
外观的政策不会影响呈现视图控制器。我认为你没有理由不能将UIAlertController子类化。但是使用它可能会使用自定义增长的内容替换警报视图变得更加困难,因为警报视图现在只是由您无法控制的类间接创建。对于UIAlertView same rules applies as before。