美文网首页
swift 懒加载,重写model的set方法赋值,按钮点击,d

swift 懒加载,重写model的set方法赋值,按钮点击,d

作者: 小傑 | 来源:发表于2016-11-15 14:21 被阅读97次

1.懒加载

private lazy var label : UILabel = {
       
        let label = UILabel()
        label.textColor = UIColor.blackColor()
        label.textAlignment = NSTextAlignment.Center
        label.font = UIFont.systemFontOfSize(18)
        
        return label
    }()

2.重写model的set方法赋值(可选类型要先判断为不为nil,为nil强转会崩)

var model : WBModel? {
        
        didSet {
            label.text = model!.title
            
            //如果拼接的话要转
            if let string = model?.title {
                label.text = "cell  \(string)"
            }
        }
        
    }

3.按钮的点击 :

无参数Selector("btnWithLogin”) 或者 #selector(LoginViewController.btnWithLogin)

有参数Selector(“btnWithLogin:”)
#selector(MyDetailHeardView.btnWithLogin(_:))

btn_sure.addTarget(self, action: Selector(“btnWithLogin:"), forControlEvents: UIControlEvents.TouchUpInside)

注意:@objc别忘了这个!!!!!!
@objc private func btnWithLogin(btn : UIButton) -> Void {
        
        if delegate != nil {
            delegate?.myDetailHeardViewDidClick(btn.tag)
        }
    }

4.代理delegate

1.定义
protocol LoginInputViewDelegate : NSObjectProtocol {
    
    func didClickWithForget()
}

class LoginInputView: UIView {
    
    
    weak var delegate : LoginInputViewDelegate?
    
    //MARK: - 点击了忘记密码,别忘了@objc
    @objc private func btnWithForget() -> Void {
        
        if delegate != nil {
            delegate?.didClickWithForget()
        }
    }

    private lazy var btn_forget : UIButton = {
       
        let btn_forget = UIButton(type: UIButtonType.Custom)
        btn_forget.addTarget(self, action: #selector(LoginInputView.btnWithForget), forControlEvents: UIControlEvents.TouchUpInside)
        
        return btn_forget
    }()
}

2.实现
extension LoginViewController : LoginInputViewDelegate {
    
    func didClickWithForget() {
        print("点击了忘记密码")
    }
    
}

5.重写frame的set方法,注意:如果头部要出现空隙,y+的同时,height要-

    //重写frame
    override var frame:CGRect{
        didSet {
            
            var newFrame = frame
            newFrame.origin.x += 10/2
            newFrame.size.width -= 10
            newFrame.origin.y += 10
            newFrame.size.height -= 10
            super.frame = newFrame
            
            
        }
    }
  1. 移除通知
deinit
    {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }

7.下载图片dispatch_group_create用法

private func cachesImages(viewModels: [StatusViewModel])
    {
        // 0.创建一个组
        let group = dispatch_group_create()
        
        for viewModel in viewModels
        {
            // 1.从模型中取出配图数组
            guard let picurls = viewModel.thumbnail_pic else
            {
                 // 如果当前微博没有配图就跳过, 继续下载下一个模型的
                continue
            }
            // 2.遍历配图数组下载图片
            for url in picurls
            {
                // 将当前的下载操作添加到组中
                dispatch_group_enter(group)
                
                // 3.3利用SDWebImage下载图片
                
                SDWebImageManager.sharedManager().downloadImageWithURL(url, options: SDWebImageOptions(rawValue: 0), progress: nil, completed: { (image, error, _, _, _) -> Void in
                    NJLog("图片下载完成")
                    // 将当前下载操作从组中移除
                    dispatch_group_leave(group)
                })
            }
        }
        
        // 监听下载操作
        dispatch_group_notify(group, dispatch_get_main_queue()) { () -> Void in
            NJLog("全部下载完成")
            self.statuses = viewModels
        }
    }

相关文章

  • swift 懒加载,重写model的set方法赋值,按钮点击,d

    1.懒加载 2.重写model的set方法赋值(可选类型要先判断为不为nil,为nil强转会崩) 3.按钮的点击 ...

  • ios 自定义cell,自定义行高,自适应行高

    定义数据模型model,tableviewcontroller中懒加载model,重写get方法,获取数据。将模型...

  • Swift中懒加载

    在Swift中对控件进行懒加载比oc中方便很多,只要lazy前缀,oc中懒加载方法,重写getter方法.Swif...

  • 懒加载和单例

    懒加载 声明属性 重写get方法 Swift 单例的创建方式 方式一:创建单例工厂方法(重写alloc完善) 声明...

  • swift学习09(懒加载)

    swift中是通过专门的关键字(lazy)来实现懒加载; 一、直接懒加载赋值 二、懒加载赋一个函数 三、懒加载赋一...

  • ##swift中重写父类属性的set和get方法

    swift中重写父类属性的set和get方法 重写父类属性的set和get方法,需要添加关键字 override....

  • ios

    使用懒加载重写getter方法,在方法里用到self.赋值,会造成死循环,self.写在等式左边不是调用的sett...

  • SwiftUI UI知识点

    1.关于 Binding 中重写 get、set 方法;实现文本框有值,则按钮可点击,反之。 2.关于 .com...

  • lazy

    swift中是通过专门的关键字(lazy)来实现懒加载; 直接懒加载赋值 懒加载赋一个函数 懒加载赋一个闭包 1、...

  • swift 中 Lazy,deinit用法

    * swift中懒加载写法,懒加载在Swift中是一个闭包。 懒加载详细介绍看这里 * OC中的dealloc方法...

网友评论

      本文标题:swift 懒加载,重写model的set方法赋值,按钮点击,d

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