swift用父类定义,子类实例化,怎么调用子类方法

[复制链接]
287 2
//定义
var cellField:UIControl!

func initFrame(controlType : String){
if(controlType == "01"){//根据controlType的不同,创建不同的控件
cellField = UITextField(frame: CGRectMake(0 , 0, 200, 20))
//以下这句报错,因为borderStyle是UITextField的方法,这里怎么能调用这个方法?
cellField.borderStyle = UITextBorderStyle.RoundedRect
self.addSubview(cellField)
}else if(controlType == "02"){
cellField = UISwitch()
}
}


因为borderStyle是UITextField的方法,所以报错了,虽然是用父类UIControl定义的,但实例化是以UITextField实例化的,需要怎么写才能调用UITextField的方法

举报 使用道具

回复

2 个评论

WilliamNit  新手上路  发表于 2019-3-15 04:01:27  | 显示全部楼层
//定义
var cellField:UIControl!

func initFrame(controlType : String){
        if(controlType == "01"){//根据controlType的不同,创建不同的控件
            cellField = UITextField(frame: CGRectMake(0 , 0, 200, 20))
            //以下这句报错,因为borderStyle是UITextField的方法,这里怎么能调用这个方法?
            cellField.borderStyle = UITextBorderStyle.RoundedRect
            self.addSubview(cellField)
        }else if(controlType == "02"){
            cellField = UISwitch()
        }
    }


因为borderStyle是UITextField的方法,所以报错了,虽然是用父类UIControl定义的,但实例化是以UITextField实例化的,需要怎么写才能调用UITextField的方法

举报 使用道具

回复
luoyao  新手上路  发表于 2019-3-15 04:23:32  | 显示全部楼层
if let cellField_tmp = cellField as? UITextField {
    cellField_tmp.borderStyle = UITextBorderStyle.RoundedRect
    self.addSubview(cellField_tmp)
}

也可以自己再精简一下,主要是 as? 的使用,向下转换

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表