专栏首页BY的专栏使用协议方法加载XIB

使用协议方法加载XIB

面向协议的方法

创建协议 NibLoadProtocol.swift

import Foundation

protocol NibLoadProtocol {
    
}

extension NibLoadProtocol where Self : UIView {
    //在协议里面不允许定义class 只能定义static
    static func loadFromNib(_ nibname: String? = nil) -> Self {//Self (大写) 当前类对象
        //self(小写) 当前对象
        let loadName = nibname == nil ? "\(self)" : nibname!
        
        return Bundle.main.loadNibNamed(loadName, owner: nil, options: nil)?.first as! Self
    }
}

遵守协议

import UIKit

class MyView: UIView, NibLoadProtocol {
}

使用

// xib文件与 类名同名 的情况
let demoView = DemoView.loadFromNib()


// xib文件与 类名不相同 的情况
let testV = TestView.loadFromNib("TestView0")

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Objective-C Runtime 的一些基本使用

    BY
  • 为博客添加 Gitalk 评论插件结语

    BY
  • iOS开发 Xcode的各种调试、DEBUG

    BY
  • 不推荐使用Spring Boot 2.2.0 ,这个问题你肯定会遇

    > 项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注 最新版本实践

    冷冷
  • 文本挖掘|R语言助力简·奥斯丁部分作品的情感分析

    ‍‍‍‍ 整理文本进行情感分析是典型的文本分析案例,当打算深度阅读一篇文章时,可以利用我们对单词的情感意图的理解来推断一篇文章是积极的还是消极的,或者其他可能带...

    黑妹的小屋
  • 微信 Tinker 的一切都在这里,包括源码 ( 一 )

    作者希望通过分享在这历程中的思考与经验,能帮助大家更容易的决定是否在自己的项目中使用热补丁技术,以及选择什么样方案。

    微信终端开发团队
  • Neo4J:MERGE命令

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    程裕强
  • 微信Tinker的一切都在这里,包括源码(一)

    Tinker顺利完成了公司的审核,并非常荣幸的成为github.com/Tencent上第一个正式公开的项目。我希望通过分享微信在这历程中的思考与经验,能帮助大...

    张绍文
  • Vuex之结构

    之前整理了vuex的使用场景,现在开始学习学习怎么使用。我会根据官网api来重新学习一遍。

    wade
  • 我们来继续研究 mybatis 框架sql映射文件的属性

    温馨提示:本问阅读需要4分钟,建议收藏后阅读! 各位小伙伴 祝大家元旦快乐 开始我们今天的分享 我们已经了解了 mybatis 框架的两种使用方式以及主配置文件...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券