1

シンプルなナビゲーションベースのアプリを作成しました。iPhone ではうまく動作しますが、iPad 3.2 シミュレーターとデバイスでは動作しません。

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で解決できますか?

4

2 に答える 2

5

UIWindow には、iOS < 4.0 では rootViewController プロパティがありませんでした。したがって、バージョンを確認して (google it)、rootViewController を設定するかview、ユーザーが実行しているバージョンに基づいて、以下のように、サブビューとしてナビゲーション コントローラーをウィンドウに追加する必要があります。

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

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

于 2011-04-11T20:25:58.227 に答える
1

正しい方法は次のとおりです (「:」を忘れないでください!):

if ( [self.window respondsToSelector:@selector(setRootViewController:)] )
    self.window.rootViewController = self.tabBarController;
else
    [self.window addSubview: self.tabBarController.view];
于 2012-02-29T11:14:59.000 に答える