본문 바로가기

이상/iOS

[iOS] IB Designables - Failed to render and update auto layout status for ViewController: The agent threw an exception

반응형

최근 다시 iOS 앱을 만들면서 처음 보는 에러가 발생했다.

 

IB Designables

 

굳이 수정하지 않아도 앱은 잘 돌아간다.

 

때문에 처음에는 귀찮아서 무시하고 개발했지만

 

갈수록 눈에 거슬려서 구글링해보니 스택오버플로우에 딱 맞는 답변이 있었다.

 

원인은 CustomView Class를 만들 때 .xib 파일을 로드하는 부분 때문이었다.

 

예전에 썼던 CustomView 게시글에서 init 할 때

 

1
2
3
4
5
6
private func commonInit(){
    Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
    addSubview(customView)
    customView.frame = self.bounds
    customView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
cs

 

Bundle.main.loadNibNamed() 이런 식으로 .xib 파일을 로드했는데

 

이렇게 하지 말고 아래 line2처럼 Bundle을 제대로 생성해 주라고 한다.

 

1
2
3
4
5
6
7
private func commonInit(){
    let bundle = Bundle(for: CustomView.self)
    bundle.loadNibNamed("CustomView", owner: self, options: nil)
    addSubview(customView)
    customView.frame = self.bounds
    customView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
cs

 

 

스택오버플로우 답변의 코멘트에 따르면

 

Interface Builder가 렌더링 할 때 Application 에서 돌아가는 게 아니기 때문에

 

Main Application Bundle이 없어서 이런 에러가 발생하는 거라고 한다.

 

이제 Xcode 상에서는 에러로 표시되고 실제 앱에서는 잘 돌아가는 이유가 설명된다.

 

이제야 신발에 붙은 껌딱지가 떼진 느낌이다.

반응형