2010-08-21 1 views
0

iPhone 용 개발자가 사용할 라이브러리를 작성하고 있습니다 (OpenFeint가 구현 된 방식과 비슷 함). 연결된 ViewController를 만들려고합니다. 이 간단한 컨트롤 (UIButtons 등)로 작동하는 동안 나는, 그러나프로그래밍 방식으로 표시하기위한 새로운 ViewController 및 xib 만들기 (addSubview 사용)

SplashScreenViewController *splashScreenViewController = [[SplashScreenViewController alloc] init]; 
UIWindow *topApplicationWindow = [self getTopWindow]; 
[topApplicationWindow addSubview:splashScreenViewController.view]; 

내 코드에서 인스턴스화 할 수 있도록 XIB는 아무것도 내 SplashScreenViewController와 함께 보여줍니다. SplashScreenViewController는 매우 간단합니다 :

#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 


@interface SplashScreenView : UIViewController { 
} 

@end 

구현이 비어 있습니다. 내 View XIB (SplashScreenView.xib)에서 File Owner 's 클래스를 작동하지 않는 SplashScreenViewController로 설정하려고 시도했습니다. 그런 다음 IB에서 View Controller를 추가하는 OpenFeint에서 수행 한 것처럼 보았습니다. 기본 UIView를 자식으로 만들고 대신 SplashScreenViewController 클래스로 만듭니다. 또한 작동하지 않습니다 (표시되지 않음).

누구나 내가 누락 된 부분에 대한 좋은 생각이 있거나 누군가 내가 시도하고있는 방식으로 새로운 ViewController를 만드는 연습을 권장 할 수 있는지 궁금합니다.

감사합니다.

답변

1

한번에 2 일 :

  1. 전화 initWithNibName 단지 init이 없습니다. 어쩌면 OpenFeint가 initWithNibName을 호출하기 위해 init을 오버라이드했을지도 모릅니다. 그래서 당신은 그것을 보지 못합니다.

  2. SplashScreenViewController를 파일 소유자로 설정하고보기 콘센트를 IB의 보기에 연결합니다.

희망이 있습니다.

+0

'init'은'initWithNibName : nil bundle : nil'을 수행합니다. nibName이 nil이면 기본 loadView는 클래스 이름 (아마도 [[self class] description] 또는 [self className])을 사용합니다. –

+0

그래도 문제가 될 수 있습니다. 컨트롤러 클래스가 "SplashScreenViewController"인 동안 그의 xib에 "SplashScreenView.xib"라는 이름을 붙이세요. 그가 m 파일을 잘못 작성했다고 가정합니다. 그렇지 않으면 SplashScreenView가 UIViewController에서 상속받을 이유가 없습니다. – Idan

+0

프로젝트에서 리팩터링 할 이름을 사용하는 대신이 질문에보다 적절하게 코드를 다시 작성했습니다. 그래, 네. XIB 이름은 실제 라이브러리의 ViewController 이름과 다릅니다. 그 혼란을 유감스럽게 생각합니다. 귀하의 제안이 효과적입니다. OpenFeint는'initWithNibName : bundle :'을 사용하지 않고 그것을하는 것처럼 보이기 때문에 당분간이 질문을 공개 할 것입니다. 누군가가'initWithNibName : bundle :'을 사용하지 않고 그것을하는 방법에 대한 아이디어가 있다면, 나는 그것을 응답으로 체크 할 것이다. 그렇지 않으면, 내가 이것을 체크 할 것이다. – user426856

0

[splashScreenViewController alloc] 대신 [SplashScreenViewController alloc]을 사용해보십시오. 컴파일러 경고 메시지를받지 못했기 때문에 놀랍습니다.

+0

코드를 삽입 할 때 가독성을 위해 창의력을 사용했고 alloc 문을 잘못 입력했습니다. 실제로 내 코드에서 [SplashScreenViewController alloc]입니다. 죄송합니다 – user426856