2012-03-15 2 views
0

저는 iOS 개발의 UI 부분을 처음 사용합니다. 범용 iOS 앱을 만들려고합니다. Xcode 4.3에서 프로젝트가 Single View Application 템플릿과 Universal 디바이스 제품군을 사용하여 생성 된 경우 AppDelegate, ViewController, ViewController_iPhone.xib 및 ViewController_iPad.xib 파일이 생성됩니다. 이전 버전의 Xcode에서는 AppDelegate의 두 하위 클래스도 만들어 졌기 때문에 이러한 것들이 혼란 스럽습니다. 하나는 iPhone 용이고 다른 하나는 iPad 용입니다. 어쨌든, 예를 들어, 나는 TestAppDelegate, TestViewController, TestViewController_iPhone.xib 및 TestViewController_iPad.xib를 가지고있다. iPad 시뮬레이터에서 앱을 실행하면 TestViewController_iPad.xib가 표시됩니다.

그런 다음 AlternateViewController를 추가했습니다. 이후 AlternateViewController_iPad.xib를 만들었습니다. 이 xib 파일을 선택하고 File 's Owner Custom Class를 AlternateViewController로 설정하고 Outlet보기를 Objects 아래의보기로 설정합니다.iOS에서 다른보기를 표시 할 수 없습니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    if(NO){ 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      self.viewController = [[[TestViewController alloc] initWithNibName:@"TestViewController_iPhone" bundle:nil] autorelease]; 
     } else { 
      self.viewController = [[[TestViewController alloc] initWithNibName:@"TestViewController_iPad" bundle:nil] autorelease]; 
     } 
     self.window.rootViewController = self.viewController; 
    } 
    else{ 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      self.alternateScreenController = [[[AlternateViewController alloc] initWithNibName:@"AlternateViewController_iPhone" bundle:nil] autorelease]; 
     } else { 
      self.alternateScreenController = [[[AlternateViewController alloc] initWithNibName:@"AlternateViewController_iPad" bundle:nil] autorelease]; 
     } 
     self.window.rootViewController = self.alternateScreenController; 
    } 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

나는 불행하게도, AlternateViewController_iPad.xib이 표시되지 않습니다, 코드를 실행하지만 : 내가이 짓을 TestAppDelegate에서 내가 AlternateViewController_iPad를 표시 할 수 있는지 확인하고 싶었다.



'return YES;'에 중단 점을 넣었습니다. 디버그 영역에서 변수 self.window.rootViewController.nibBundlenil으로 설정되었음을 알 수 있습니다. 그러나 TestViewController_iPad가 사용되면 변수 self.window.rootViewController.nibBundle이 아니며이 아닙니다.



AlternateViewController 및 AlternateViewController_iPad.xib가 삭제되었습니다. 그런 다음 다시 만들었지 만 '새 파일에 대한 옵션 선택 :'팝업에서 Class를 AlternateViewController, UIViewController의 'Subclass'로 재설정하고 "대상으로 지정한 iPad"및 "XIB with user"를 선택했습니다. 인터페이스. " 이 새 파일에 대한 TestAppDelegate를 수정 한 다음 응용 프로그램을 다시 실행하십시오. 이상하게도 AlternateViewController (iPad)가 이제 표시되고 변수 self.window.rootViewController.nibBundle이 아니며이 아닙니다.



이제 내가 무엇을 놓치고 있습니까? 버그는 어디에 있습니까? 그것은 내 코드 또는 Xcode 4.3과 함께 무엇입니까 ???



추가 질문 :
TestViewController_iPad 먼저 표시되는 경우와 버튼을 AlternateViewController_iPad 표시됩니다 클릭하면, 어떻게, 정확히, 그렇게하기 위하여려고하고 있다는이있다?


업데이트 문제를 파악했습니다. 어떤 일이 발생하는지는 ViewController가 xib 파일없이 생성되면 loadView 메소드가 새로운 ViewController에 추가된다는 것입니다. 내 이해를 위해,이 방법은 뷰가 프로그래밍 방식으로/수동으로 생성 될 때 사용됩니다. xib 파일이나 스토리 보드를 사용할 때는이 파일을 제거해야합니다. 나는 그것을 제거하고 모든 것은 작동한다! :)

+0

AlternateViewController_iPad.xib가 표시되지 않습니다. 어떻게 확인할 수 있습니까 ?? – Shubhank

+0

화면이 완전히 검은 색입니다. – yoninja

+0

AlternateViewController_iPad.xib는 기본적으로 검은 색보기로 표시 될 수 있습니까? – Shubhank

답변

0

나는 문제를 알아 냈다. 어떤 일이 발생하는지는 ViewController가 xib 파일없이 생성되면 loadView 메소드가 새로운 ViewController에 추가된다는 것입니다. 내 이해를 위해,이 방법은 뷰가 프로그래밍 방식으로/수동으로 생성 될 때 사용됩니다. xib 파일이나 스토리 보드를 사용할 때는이 파일을 제거해야합니다. 나는 그것을 제거하고 모든 것은 작동한다!:)

관련 문제