Custom View(Cell)를 만들기 위해 xib 파일을 만들기도 하는데,
xib, nib, file's owner 등 관련 개념을 정리해보자.
.xib는 XML(태그 형태의 마크업 언어)로 이루어진 파일로, XCode가 인터페이스 빌더를 통해 시각적으로 제어 가능하도록 제공하고 있다.
.xib 파일을 컴파일한 것이 .nib 파일이다.
UINib
class는 nib 파일의 컨텐츠를 래핑하는 객체다.
An object that contains Interface Builder nib files.
UINib
객체는 nib 파일의 컨텐츠(view)를 메모리에 캐시하고 있다가, instantiate할 때(.instantiate
) 언아카이빙한다.
A UINib object caches the contents of a nib file in memory, ready for unarchiving and instantiation.
let nib = UINib(named: "Name", bundle: nil)
let contents = nib.instantiate(withOwner: self, options: nil)
UINib
class로 nib 파일을 로드하는 방법말고도, Bundle
class에 정의된 loadNibNamed
메서드를 통해 로드할 수 있다.
func loadFromNib() -> UIView? {
guard let view = Bundle.main.loadNibNamed(name, owner: nil, options: nil)?.first as? UIView else {
return nil
}
return view
}
모든 nib 파일에는 File's Owner 객체가 정의되어 있는데, File's Owner로 지정한 객체는 nib 파일 내 뷰와 연결될 수 있다. 즉, outlet과 IBAction으로 연결할 수 있다.
주로 View Controller 객체가 File's Owner가 된다.
storyboard는 xib의 번들(여러 xib가 모인 것)이다.
references