注册 登录
主题 : swift 继承UIKIT 后的初始化方法
级别: 新手上路
UID: 306180
精华: 0
发帖: 5
可可豆: 14 CB
威望: 15 点
在线时间: 20(时)
注册时间: 2014-04-08
最后登录: 2015-06-29
0 楼:  发表于: 2015-05-21 11:22    发自: Web Page
来源于 技术求助 分类

swift 继承UIKIT 后的初始化方法   

在项目里我继承UIview 或者 UITableView 想在其Init()方法里写初始化方法,可是老是报一些莫名其妙的错误(Must call a designated initializer of zhe superclass "****"),不知道有没有人遇到过。。求解答。。。
级别: 新手上路
UID: 475027
精华: 0
发帖: 2
可可豆: 11 CB
威望: 11 点
在线时间: 4(时)
注册时间: 2015-05-21
最后登录: 2015-05-21
1 楼:  发表于: 2015-05-21 12:28    发自: Web Page
重写的方法前面要加
    override
然后要执行下super的init

类似这样。
    override func viewDidLoad() {
        super.viewDidLoad()
级别: 新手上路
UID: 306180
精华: 0
发帖: 5
可可豆: 14 CB
威望: 15 点
在线时间: 20(时)
注册时间: 2014-04-08
最后登录: 2015-06-29
2 楼:  发表于: 2015-05-21 15:01    发自: Web Page
回 1楼(biQ) 的帖子
我是继承的uiview 不是uiviewcontroller啊。。。
级别: 侠客

状态: 连续签到 - [47天]
UID: 65591
精华: 0
发帖: 63
可可豆: 354 CB
威望: 245 点
在线时间: 331(时)
注册时间: 2011-04-22
最后登录: 2017-07-24
3 楼:  发表于: 2015-05-22 15:10    发自: Web Page
uiview 一般重写drawrect和layoutsubviews来初始化对象
风也如是,雨也如梦
级别: 新手上路
状态: 连续签到 - [3天]
UID: 175427
精华: 0
发帖: 68
可可豆: 206 CB
威望: 154 点
在线时间: 366(时)
注册时间: 2012-11-07
最后登录: 2018-09-20
4 楼:  发表于: 2015-05-24 17:31    发自: Web Page
那个意思是在init方法必须执行此类的一个初始化方法。苹果不太允许直接重新父类init方法。这个init重写需要两个关键词修饰。在swift1.2之后更改了关键词。最好不要重写init方法。如果真的必须使用init来初始化就搜一下swift 父类init
文章再也不去分享,想去看最新的文章请去junshang.me被这里没素质的人弄得精神累了
级别: 新手上路
状态: 连续签到 - [2天]
UID: 17889
精华: 0
发帖: 24
可可豆: 59 CB
威望: 47 点
在线时间: 75(时)
注册时间: 2010-04-19
最后登录: 2016-10-24
5 楼:  发表于: 2015-05-27 08:52    发自: Web Page
一般遇到这种情况, xcode会有自动改正提示的, 按照xcode自动改正提示就可以修复错误.
眼高手低
级别: 侠客

状态: 连续签到 - [1天]
UID: 516682
精华: 0
发帖: 177
可可豆: 200 CB
威望: 200 点
在线时间: 469(时)
注册时间: 2015-10-22
最后登录: 2018-09-21
6 楼:  发表于: 2018-07-12 16:00    发自: Web Page
楼主解决了么   在oc里这样完全可以  swfit就报跟楼主一样的错误
最好的生活是:时光,浓淡相宜;人心,远近相安。
级别: 精灵王

状态: 连续签到 - [1天]
UID: 496724
精华: 0
发帖: 2118
可可豆: 2155 CB
威望: 2139 点
在线时间: 496(时)
注册时间: 2015-08-11
最后登录: 2018-09-22
7 楼:  发表于: 2018-07-20 09:19    发自: Web Page
回 6楼(指缝间的阳光) 的帖子
构造器3个规则
1.指定构造器必须调用其直接父类的的指定构造器
2.便利构造器必须调用同类中定义的其它构造器
3.便利构造器必须最终导致一个指定构造器被调用

https://docs.swift.org/swift-book/LanguageGuide/Initialization.html

在UIView中就是:

重写init(frame: CGRect)必须调用其super方法

必须实现父类要求实现的required init?(coder aDecoder: NSCoder)  
~
级别: 版主

状态: 连续签到 - [594天]
UID: 533249
精华: 0
发帖: 799
可可豆: 3810 CB
威望: 2565 点
在线时间: 560(时)
注册时间: 2015-12-22
最后登录: 2018-09-21
8 楼:  发表于: 2018-07-25 13:54    发自: Web Page
正解
在UIView中是:

重写init(frame: CGRect)必须调用其super方法

必须实现父类要求实现的required init?(coder aDecoder: NSCoder)  
https://github.com/YTiOSer
https://www.jianshu.com/u/562ebc94345f

本站内容均为本站转发,已尽可能注明出处。因未能核实来源或转发内容图片有权利瑕疵的,请及时联系本站,本站会第一时间进行修改或删除。 QQ : 3442093904

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部