2011-04-11 4 views
1

私は簡単なナビゲーションベースのアプリケーションでした。 それは非常によくiphoneで動作しますが、ipad 3.2のシミュレータとデバイスで動作しません。ipad 3.2のrootViewControllerを設定していません

in applicationdidfinishイベント;

MainViewController *viewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil]; 
[self.navigationController pushViewController:viewController animated:NO]; 
self.window.rootViewController = self.navigationController; 
[viewController release]; 

、このラインについて言う:

self.window.rootViewController = self.navigationController; 

[UIWindow setRootViewController:]:未認識セレクタインスタンス0x4c22dd0

に送られ、それはiPadの4.2上で動作します。

私はipad 3.2のためにそれを解決できますか?

答えて

5

UIWindowには、iOS < 4.0にrootViewControllerプロパティがありませんでした。そのため、あなたはバージョンを確認する必要があります(それをグーグル)、その後のいずれかrootViewControllerを設定するか、ユーザーが実行しているどのバージョンに基づいて、navigationControllerのview以下のように窓にサブビューとしての追加:

[self.window addSubview:self.navigationController.view]; 

quick edit:rootViewControllerプロパティを使用できるかどうかを確認するには、[self.window respondsToSelector:@selector(setRootViewController)]がTRUEまたはFALSEを返すかどうかをチェックします。

+0

偉大な、それはすべてのiOSバージョンで動作します。私はバージョンを確認する必要はないと思う。私はIBでビューコントローラを設定しないので。ありがとう... – fulberto100

1

正しい方法は、(忘れないでください ":"!):ある

if ([self.window respondsToSelector:@selector(setRootViewController:)]) 
    self.window.rootViewController = self.tabBarController; 
else 
    [self.window addSubview: self.tabBarController.view]; 
関連する問題