IB의 Tabbar ViewControllers : Custom Init를 보내시겠습니까?
-
03-07-2019 - |
문제
TabBarController 기반 앱에는 여러 탭이 있습니다. 각각에는 사용자 정의 ViewController 클래스가 있으며 인스턴스가 초기화되는 방식이 유일한 차이점입니다. 인터페이스 빌더가 다른 탭 사용자 정의 init 매개 변수를 보내는 방법이 있습니까?
현재 ViewWillAppear에서 초기화를하고 있지만 여러 가지 이유로 코드 대신 IB에서 수행하는 것이 합리적입니다.
제안이 있습니까?
고마워요, 켈소
해결책
인터페이스 빌더는 실행할 때 구체화되지 않은 객체 아카이브를 만듭니다. IB에게 특정 방법을 호출하라고 말할 수는 없습니다.
전에 초기화 해야하는 경우 viewWillAppear:
당신은 그렇게 할 수 있습니다 awakeFromNib
, 모든 객체가로드 된 후에 호출되고 모든 매장이 대상에 연결된 후에도 호출됩니다.
초기화를 더 일찍하고 싶다면 재정의함으로써 그렇게 할 수 있습니다. initWithCoder:
(참조 NSCoding
문서화 프로토콜). 어디에서나 문서화되어 있는지 모르겠지만, 이는 아카이브에서 해독되는 객체에 대해 지정된 초기화입니다.
위의 모든 부분에서는 매개 변수를받을 수 없지만 코드에서는 전역 변수를 신중하게 사용하여 필요한 모든 것에 액세스 할 수 있어야합니다. 당신은 또한 사용할 수 있습니다 [[UIApplication sharedApplication] delegate]
응용 프로그램에 액세스하려면 객체를 대표합니다.
다른 팁
NIB가로드 될 때 IB 런타임이 호출되는 메소드를 변경할 수있는 방법은 없다고 생각합니다. 당신이 달성하려는 것을 설명했다면 (예 : ViewDidAppear에서 설정을 수행하는 것이 당신에게 효과가 없는지) 초기화를 더 잘 처리하는 방법을 제안 할 수 있습니다.