• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift基础--通知,代理和block的使用抉择以及Swift中的代理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 通知 : 两者关系层次太深,八竿子打不着的那种最适合用通知.因为层级结构深了,用代理要一层一层往下传递,代码结构就复杂了

  • 代理 : 父子关系,监听的方法较多的时候使用

  • block : 父子关系,监听的方法较少的时候使用

Swift中的代理

swift中代理的实现

  • 定义swift中代理的协议
// swift 中的代理必须继承自NSObjectProtocol
protocol VisitorViewDelegate : NSObjectProtocol
{
    // 代理中的方法默认必须实现,有可以不实现的情况,以后整理
    func visitorViewDidClickRegisterBtn(visitorView : VisitorView)
    func visitorViewDidClickLoginBtn(visitorView : VisitorView)
}
  • 声明代理属性
    // 代理属性,与OC一样,用weak修饰
    weak var delegate : VisitorViewDelegate? // 可选类型,代理可以有也可以没有
  • 在按钮点击的事件中执行代理方法
    // 注册按钮的点击
    @IBAction func registerBtnClick(sender: UIButton) {
        // 监听到点击,通知代理做事情
        // 代理中的方法默认是必须实现的(也有可选的,后面再说),所以这里没有判断代理有没有实现相应的方法
        delegate?.visitorViewDidClickRegisterBtn(self)
    }

    // 登录按钮的点击
    @IBAction func loginBtnClick(sender: UIButton) {
        // 监听到点击,通知代理做事情
        delegate?.visitorViewDidClickLoginBtn(self)
    }
  • swift中为了让方法分类更清晰,实现代理或者数据源的方法单独写到分类中
// MARK: - VisitorViewDelegate代理方法
// swift 中为了区分不同类型的代理方法或者数据源方法,通过extension实现了更好的区分
extension BaseTableViewController: VisitorViewDelegate
{

    func visitorViewDidClickRegisterBtn(visitorView : VisitorView) {

        ChaosLog("")
    }

    func visitorViewDidClickLoginBtn(visitorView : VisitorView) {

        ChaosLog("")
    }
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SWIFT数组发布时间:2022-07-13
下一篇:
Swift可空(Optional)类型基础发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap