2011-08-18 5 views
3

다음은 주로 Interface Builder를 사용하여 하위보기에 따라 탭 모음을 만드는 UITabBarController Tutorial입니다. 거기에 UITabBarController가 생성되고 Tab의 View Controller도 거기에 추가됩니다.파일 소유자 UITabBarController 하위보기

UIViewController ({WelcomeViewController | AboutViewController}. {h | m}}를 만드는 것이 필요하지 않습니까?

서브 뷰 {WelcomeViewController | AboutViewController} .xib의 실제 파일 소유자는입니다.

처음에는 WelcomeViewController.h에 IBAction 메서드를 만들려고 했었습니다 : WelcomeViewController.xib의 인터페이스 작성기에서 File 's Owner에 나타난대로 해당 동작을 단추로 눌러 연결할 수있었습니다. 하지만 런타임에 실제 파일 소유자가 이 아니고이 아니므로 WelcomeViewController.m의 객체입니다. 내가 여기 있니? IBAction이 Interface Builder (Xcode 4 여기)에 나타나는 버그입니까?

마지막 질문 : 튜토리얼에서와 같이 Interface Builder에서 모든 것을 연결할 때 어떻게 (여전히이 하위 뷰에서만 발생하는 작업에 대해 WelcomeViewController.h의 IBActions를 사용하여) 코드를 분리 할 수 ​​있습니까?

답변

4

UIViewControllers {WelcomeViewController | AboutViewController}. {h | m}을 만드는 것이 필요하지 않습니까?

아니요, 뷰 계층 구조를 관리하기 위해 전체 화면 창당 하나 이상의 ViewController가 있어야하기 때문에 (최소한, 최적의 경우) 많은 컨트롤러가 필요합니다. TabBarController는로드되는 하위 컨트롤러의 디스플레이를 관리하는 일종의 "멍청한"메타 컨트롤러 일 뿐이므로 전환되는 뷰에 대한 컨트롤러가 필요합니다. this part of the Apple doc을 읽는 것이 좋습니다.

하위 뷰 {WelcomeViewController | AboutViewController} .xib의 실제 파일 소유자는 누구입니까?

파일의 소유자가 해당 컨트롤러 클래스해야한다 (귀하의 경우, {WelcomeViewController | AboutViewController} {시간은 | m은}.) - 당신은 관리자 팔레트에서 인터페이스 빌더에서 클래스를 설정할 수 있습니다 파일의 소유자가 선택 될 때 . 응용 프로그램 시작시 열리는 첫 번째 창 (일반적으로 Main.xib 등)은 파일 소유자로 응용 프로그램 위임을 가져야합니다. File 's Owners는 XIB/NIB 파일의 객체를 소유하고 있습니다. 객체 참조 현명한, 당신은 내가 무엇을 의미하는지 알고 있습니다. 나는 또한 다른 컨트롤러와 XIB/NIB 파일을로드 할 수 있어야한다고 생각합니다. 소유자), 그러나 나는 확실하지 않다.

... 바로 여기 있습니까? IBAction이 Interface Builder (Xcode 4 여기)에 나타나는 버그입니까?

일반적인 실수 인 인터페이스 작성기에서 잘못된 방법으로 작업을 연결했을 수 있습니다. Ctrl 키를 누른 상태에서 버튼의 행을 파일 소유자로 드래그하고 원하는 링크를 연결할 방법을 선택하십시오. 그렇게해야합니다.

마지막 질문 : 자습서 에서처럼 Interface Builder에서 모든 것을 연결할 때 어떻게 코드를 분리 할 수 ​​있습니까 (이 하위 뷰에서만 발생하는 동작에 대해 WelcomeViewController.h에 IBActions가 있습니까?).

저는 첫 번째 단락에서 이것을 대답했다고 생각합니다. - WelcomeViewController가 아직 남아 있으며 IBOutlets를 만들고 IB에서 연결해야합니다. 물론 멤버의 "보기"가 (파일의 소유자 연결을 통해) 자동으로 채워지기 때문에 프로그래밍 방식으로 연결을 수행 할 수 있으며 거기에서 모든 하위보기에 액세스 할 수 있습니다.

+0

좋아, 나는 신원 탭에서 클래스를 설정하는 것을 잊었다 고 생각한다. 다음 번에 시도해야한다. 그래서, 기본적으로, 지금까지'UIViewController' 클래스의 새로운 객체가'WelcomeViewController' 또는'AboutViewController' 대신에 인스턴스화되었습니다. 맞습니까? – fabb

+0

예 또는 "NSObject"유형 일 수도 있습니다. – manmal

+0

좋아, 지금은 작동, 읽을 수있는 축복입니다 ... 감사합니다! – fabb