문제

TabBarController 기반 앱에는 여러 탭이 있습니다. 각각에는 사용자 정의 ViewController 클래스가 있으며 인스턴스가 초기화되는 방식이 유일한 차이점입니다. 인터페이스 빌더가 다른 탭 사용자 정의 init 매개 변수를 보내는 방법이 있습니까?

현재 ViewWillAppear에서 초기화를하고 있지만 여러 가지 이유로 코드 대신 IB에서 수행하는 것이 합리적입니다.

제안이 있습니까?

고마워요, 켈소

도움이 되었습니까?

해결책

인터페이스 빌더는 실행할 때 구체화되지 않은 객체 아카이브를 만듭니다. IB에게 특정 방법을 호출하라고 말할 수는 없습니다.

전에 초기화 해야하는 경우 viewWillAppear: 당신은 그렇게 할 수 있습니다 awakeFromNib, 모든 객체가로드 된 후에 호출되고 모든 매장이 대상에 연결된 후에도 호출됩니다.

초기화를 더 일찍하고 싶다면 재정의함으로써 그렇게 할 수 있습니다. initWithCoder: (참조 NSCoding 문서화 프로토콜). 어디에서나 문서화되어 있는지 모르겠지만, 이는 아카이브에서 해독되는 객체에 대해 지정된 초기화입니다.

위의 모든 부분에서는 매개 변수를받을 수 없지만 코드에서는 전역 변수를 신중하게 사용하여 필요한 모든 것에 액세스 할 수 있어야합니다. 당신은 또한 사용할 수 있습니다 [[UIApplication sharedApplication] delegate] 응용 프로그램에 액세스하려면 객체를 대표합니다.

다른 팁

NIB가로드 될 때 IB 런타임이 호출되는 메소드를 변경할 수있는 방법은 없다고 생각합니다. 당신이 달성하려는 것을 설명했다면 (예 : ViewDidAppear에서 설정을 수행하는 것이 당신에게 효과가 없는지) 초기화를 더 잘 처리하는 방법을 제안 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top