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를 만드는 연습을 권장 할 수 있는지 궁금합니다.
감사합니다.
'init'은'initWithNibName : nil bundle : nil'을 수행합니다. nibName이 nil이면 기본 loadView는 클래스 이름 (아마도 [[self class] description] 또는 [self className])을 사용합니다. –
그래도 문제가 될 수 있습니다. 컨트롤러 클래스가 "SplashScreenViewController"인 동안 그의 xib에 "SplashScreenView.xib"라는 이름을 붙이세요. 그가 m 파일을 잘못 작성했다고 가정합니다. 그렇지 않으면 SplashScreenView가 UIViewController에서 상속받을 이유가 없습니다. – Idan
프로젝트에서 리팩터링 할 이름을 사용하는 대신이 질문에보다 적절하게 코드를 다시 작성했습니다. 그래, 네. XIB 이름은 실제 라이브러리의 ViewController 이름과 다릅니다. 그 혼란을 유감스럽게 생각합니다. 귀하의 제안이 효과적입니다. OpenFeint는'initWithNibName : bundle :'을 사용하지 않고 그것을하는 것처럼 보이기 때문에 당분간이 질문을 공개 할 것입니다. 누군가가'initWithNibName : bundle :'을 사용하지 않고 그것을하는 방법에 대한 아이디어가 있다면, 나는 그것을 응답으로 체크 할 것이다. 그렇지 않으면, 내가 이것을 체크 할 것이다. – user426856