2012-03-02 4 views
0
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease]; 
    } else { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease]; 
    } 

    CustomView1 *CustomView = [[CustomView1 alloc]initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.viewController.view = CustomView; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

이 AppDelegate.mrootViewController의 뷰를 변경하는 방법은 무엇입니까?

내가 CustomViewrootViewcontroller의보기를 변경하려면, 위의 코드를 시도에 표시되지만 배경색이 검은 색을 유지하고 터치 이벤트 허용되지 않았다.

어디서 오류가 있습니까?

답변

1

어디에서 결함인지는 확실치 않지만 2 가지 제안 사항이 있습니다.

1) 변경

CustomView1 *CustomView = [[CustomView1 alloc]initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.viewController.view = CustomView; 

모두에서

CustomView1 *CustomView = [[CustomView1 alloc]initWithFrame:[[UIScreen mainScreen] bounds]]; 
[self.viewController.view addSubview:CustomView]; 

또는

2) 당신은 최고보기로 이동을 참조 파일을 .xib와 사용자 정의 클래스를 사용하도록 변경합니다. 그럼 그냥

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease]; 
    } else { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease]; 
    } 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

정상

enter image description here

사이드 노트 같은 앱 시작하도록 할 수 있습니다 : 당신은 대문자로 시작하는 변수의 이름을 지정하지 않아야합니다. 많은 코딩 표준에는 대문자로 시작하는 클래스가 있고 변수는 소문자로 시작합니다.

+0

멋진! ^^. 귀하의 제안이 올바르게 작동합니다. –

+0

그리고 조언 해 주셔서 감사합니다. (사이드 노드) –

0

하나의 뷰 클래스를 관리하기 위해 두 개의 다른 뷰 컨트롤러가 필요한 경우 뷰 컨트롤러가 loadView 메서드 또는 nib 파일에서 올바른 뷰 클래스를로드하도록해야합니다. 귀하의 코드에서 컨트롤러는 펜촉을 사용합니다. 그렇다면 nibs를 편집하여 뷰 클래스를 CustomView1으로 설정하십시오.

CustomView1은 아무 것도 아니기 때문에 클래스 이름 IMHO의 불행한 선택입니다.

+0

문제가 해결되었습니다. 관심을 가져 주셔서 감사합니다. –

관련 문제