UIAlertController 子类问题迅速
Posted
技术标签:
【中文标题】UIAlertController 子类问题迅速【英文标题】:UIAlertController subclass issue swift 【发布时间】:2015-11-24 22:18:12 【问题描述】:我想创建一个 UIAlertController 的子类,但我快疯了,因为我的构造函数有问题,这是我的子类:
class loginAlert : UIAlertController
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
我认为这个子类必须有构造函数: UIAlertController(title: String, message: String, preferredStyle: UIAlertControllerStyle) ,因为它是 UIAlertController 的子类,但是当我这样做时
loginAlert(title: "test", message: "test", preferredStyle: .Alert)
我得到错误,为什么我错在哪里?
【问题讨论】:
错误是什么?为什么要继承 UIAlertController ? 因为我想创建一个在我的代码中经常使用的标准 uialertController 事实上,如果您愿意,您可以继承UIAlertController
并自定义它的一些私有属性。请注意,Apple 在提交到商店时会检查私有财产和 API 使用情况:iphonedevwiki.net/index.php/UIAlertController
对不起,你说苹果检查私有财产是什么意思?
【参考方案1】:
来自UIAlertController Class Reference:
子类化注释 UIAlertController 类旨在用于 原样并且不支持子类化。此视图层次结构 类是私有的,不能修改。
您可以创建一个视图控制器,其视图包含透明度,其 UIModalPresentationStyle 为 .OverCurrentContext 且 UIModalTransitionStyle 为 .CrossDissolve 以获得非常相似的效果。
或者您可以在 UIAlertController 上编写一个扩展,该扩展可以添加需要跨类共享的方法(例如,呈现重复出现警报的方法)。有关扩展的更多信息,请参阅here。
【讨论】:
好的,但是如果我想创建一个标准的警报控制器,因为我必须在我的代码中使用它 如果是标准的,你为什么要子类化? 有关如何使用 UIAlertController 的概述,请参见此处:nshipster.com/uialertcontroller 创建警报的函数怎么样? 你可以在 UIAlertController 上写一个扩展,可以添加方法和计算值。【参考方案2】:在类外创建 UIAlertController 的函数
public func alert ()
let alert = UIAlertController(title: "Title", message: "I don't feel creative", preferredStyle: UIAlertControllerStyle.Alert)
// As many action as you want
let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil)
alert.addAction(action)
self.presentViewController(alert, animated: true, completion: nil)
但正如 beyowulf 所说,如果你想向 UIAlertController 添加方法,你可以使用扩展
【讨论】:
以上是关于UIAlertController 子类问题迅速的主要内容,如果未能解决你的问题,请参考以下文章
如何为 uialertview 或 UIAlertController 中的特定单词着色? (迅速)
子类化 UIAlertController 并遇到运行时错误
Swift:自定义 UIAlertController 视图