xib파일로 커스텀뷰 인스턴스 생성

작성일

xib파일로 커스텀뷰 인스턴스 생성

import Foundation
import UIKit

// 프로토콜 응용 xib파일로 커스텀뷰를 가져오기
protocol CustomViewNibbed {
    //생성하는 스태틱 메소드 선언 -> 자기 자신을 반환
    static func instantiate() -> Self
}
// 확장으로 프로토콜 메소드 정의
extension CustomViewNibbed where Self: UIView {
    //스태틱 메소드로 객체 인스턴스를 생성하지 않아도 호출 가능하다.
    static func instantiate() -> Self {
        //클래스 이름 문자열로 가져오기
        let className = String(describing: self)
        //해당 클래스 이름의 닙파일 가져오기
        let loadedNib = Bundle.main.loadNibNamed(className, owner: self, options: nil)
        //닙파일에서 자기 자신인 뷰를 가져오기
        let customView = loadedNib?.first as! Self
        return customView
    }
}
// 커스텀뷰 - CustomViewNibbed 프로토콜을 준수한다고 설정
class MyCustomView: UIView, CustomViewNibbed {}

class MainVC: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        //간편하게 뷰 인스턴스를 가져올 수 있다.
        let myCustomView = MyCustomView.instantiate()
    }
}