我一直在用NSCoding遇到障碍。具体来说,实例化符合NSCoding的类。也许我错过了一些非常明显的东西,但我还没有找到任何答案。
```swift
class TitleTextField: UITextField, UITextFieldDelegate {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
font = UIFont(name: "Helvetica-Neue", size: 25)
}
```
这只是一个例子,一个简单的例子。当我尝试在其他地方实例化这个类时,就像"让textField = TitleTextField()" (很遗憾无法弄清楚如何格式化)我得到错误"缺少参数'编码器'在电话"。当我尝试使用建议的TitleTextField(编码器:NSCoder)修复它时,它会抛出一个错误并告诉我删除"编码器:"然后它会抛出另一个错误并说"无法转换值type'(NSCoder).Type' (又名' NSCoder.Type')预期参数类型' NSCoder'"
如何实例化此类?
这给我带来了麻烦,我创建了一个符合NSCoding的自定义类,以及在将几个不同的例子传递给T之后。
答案 0 :(得分:2)
这非常简单 - 您需要为init(frame:)
添加另一个指定的初始值设定项,通常为UIView
。您实际上只需在其中调用super.init(...)
。
问题是,一旦添加了一个初始化程序,其他初始化程序就会停止从超类继承,你必须定义它们。
答案 1 :(得分:1)
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
font = UIFont(name: "Helvetica-Neue", size: 25)
}
这段代码对我有用。似乎你错过了func声明中的可选项
public class UIView : UIResponder {
public init?(coder aDecoder: NSCoder)
}