iOS/설명

[iOS] Class의 instance를 String으로 생성하기

Sky Titan 2021. 12. 10. 17:37
728x90

 특정 UIView를 String으로만 dynamic하게 instance를 생성하려고 한다.

 

className()

extension UIView {
    public static func className() -> String {
        return String(reflecting: Self.self)
    }
}
  • 해당 UIView Class name을 가져오는데 최종적으로 "module이름.Class이름" 과 같은 형태로 만들어진다
    • class 생성 시 앞의 Module이름은 반드시 필요하다.

 

View instance 생성

let viewClass = TestView.className() // 이 부분은 생성하고자 하는 View의 ClassName을 가져와서 dynamic하게 변경가능
let type = NSClassFromString(viewClass) as! UIView.Type
let view = type.init(frame: frame)
contentView.addSubview(view)
  • 생성하고자 하는 View의 className() 을 호출해서 class String을 가져온다.
  • NSClassFromString으로 type instance를 생성한다.
  • type의 initalizer를 호출해서 해당 View instance를 생성한다.
728x90