swift初始化函数失败
1、编译器提示出错:'required' initializer 'init(coder:)' must be provided by subclass of 'UIViewController' 2、原因分析1,在 Swift 中,类的初始化器有两种,分别是Designated Initializer(指定初始化器)和Convenience Initializer(便利初始化器) 3、错误分析 A、第一个错误因为init(coder aDecoder: NSCoder) 方法是来自父类的指定构造器,因为这个构造器是 required,必须要实现. 但是因为我们已经重载了 init(),定义了一个指定构造器,所以这个方法不会被继承,要手动覆写。
4、示例报错源码: /* 实现切换的画面 */ import UIKit class ColorViewController:UIViewController { var number:Int!; let colorMap = [ 1:UIColor.greenColor(),2:UIColor.blueColor(),3:UIColor.purpleColor() ]; /// 初始化函数 ========!!!!! 这个函数要报错 init(initNumber:Int) { self.number = initNumber; super.init(nibName: nil,bundle: nil); } override func viewDidLoad() { ///super.viewDidLoad(); /// 实例化label对象 let numberLabel = UILabel(frame: CGRectMake(0,30,20)); numberLabel.center = self.view.center; /// 设置显示内容 numberLabel.text = "第(number)页"; ///文字自动调整显示宽度 numberLabel.adjustsFontSizeToFitWidth = true; /// 设置背景色 numberLabel.backgroundColor = UIColor.whiteColor(); self.view.addSubview(numberLabel); self.view.backgroundColor = colorMap[number]; } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }修改后源码 : /* 实现切换的画面 */ import UIKit class ColorViewController:UIViewController { var number:Int!; let colorMap = [ 1:UIColor.greenColor(),3:UIColor.purpleColor() ]; /// 初始化函数 init(initNumber:Int) { self.number = initNumber; super.init(nibName: nil,bundle: nil); } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented"); } override func viewDidLoad() { ///super.viewDidLoad(); /// 实例化label对象 let numberLabel = UILabel(frame: CGRectMake(0,20)); numberLabel.center = self.view.center; /// 设置显示内容 numberLabel.text = "第(number)页"; ///文字自动调整显示宽度 numberLabel.adjustsFontSizeToFitWidth = true; /// 设置背景色 numberLabel.backgroundColor = UIColor.whiteColor(); self.view.addSubview(numberLabel); self.view.backgroundColor = colorMap[number]; } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Nosql Redis ttserver Flare memcache比较
- vue-resource 与服务器端通信及跨域实际应用
- ruby-on-rails – 在rails app / scaffold中无限
- React Router中NamedComponent与Params使用
- DB2 NoSQL JSON资料索引
- ruby-on-rails – 使用ActiveAdmin在仪表板中自动
- PostgreSQL的EXPLAIN中的“width”字段是什么意思
- vue使用drag与drop实现拖拽的示例代码
- 关于Can't find Class org.cocos2dx.cpp.App
- xml – XSLT -Cut和Paste