美文网首页APP & program
IOS15 Swift5 2种正向传值方式

IOS15 Swift5 2种正向传值方式

作者: Johnson_9d92 | 来源:发表于2022-01-27 16:09 被阅读0次

    IOS15 Swift5 2种正向传值方式

    例如自定义一个 UIView 名字叫LJView,继承UIView,搞个UIImageView控件 ,里面 搞个 成员属性
    var urlStr: String!

    , 在 其他controller里面调用了这个UIView了,
    let vi1 = UIView.init() 了,但是 怎么正向传值, 让 urlStr 赋值呢?直接传值?
    vi1.urlStr = "http://localhost:8080/demo.png" 直接这么写 , 这张图片会显示在控件里面呢?
    答案是 肯定不会的。

    第一种方式是。使用 didSet 监听器, 在成员变量后面监听 属性的值是否变化。
    var urlStr: String! {
    didSet {
    guard let urlStr = urlStr else {
    //做相应的赋值操作。。。
    }
    }
    }
    当然还有一种 属性监听器,叫做 willSet 将要设置的时候。要知道有这个方法

    第二种方式 ,在 自定义的控件里面提供一个方法 也叫函数, 这个函数不能搞成私有的,必须对外暴露出去,,也不必使用public ,没有必要。直接写
    func setImageUrl(_ urlStr: String){
    self.urlStr = urlStr
    }

    外面在new 自定义View 后, 可以通过 对象调用该 方法。
    let vi1 = LJView.init()
    vi1.setImageUrl(urlStr: "aaa.png")

    以上都是通过属性 正向传值 ,还有一种,通过构造函数,直接赋值,请看我其他博客文章。
    大概过程就是重写init方法
    private var imageURL: String!

    overide init(imageURL: String){
    self.imageURL = imageURL
    super.init() // 这个 必须放在最后书写,否则报错。不能放在前面,
    }

    xcode此时会报错,还有添加一个 requied方法,点击fixed解决,该方法是从nib加载调用的方法

    相关文章

      网友评论

        本文标题:IOS15 Swift5 2种正向传值方式

        本文链接:https://www.haomeiwen.com/subject/qjunhrtx.html