저는 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.nibBundle이 nil으로 설정되었음을 알 수 있습니다. 그러나 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 파일이나 스토리 보드를 사용할 때는이 파일을 제거해야합니다. 나는 그것을 제거하고 모든 것은 작동한다! :)
AlternateViewController_iPad.xib가 표시되지 않습니다. 어떻게 확인할 수 있습니까 ?? – Shubhank
화면이 완전히 검은 색입니다. – yoninja
AlternateViewController_iPad.xib는 기본적으로 검은 색보기로 표시 될 수 있습니까? – Shubhank