2

プロジェクトテンプレートを「シングルビュー」として選択します。ボタンクリックで詳細ビュー(UIViewController)をプッシュしようとしています。ボタンアクションが正しく起動し、コードを実行しています[self navigatingController]push......私のコードはとして:

MapDetailViewController *mapDetailViewController = [[MapDetailViewController alloc] init];
    [self.navigationController pushViewController:mapDetailViewController animated:YES];
    NSLog(@"self.navigation is as %@",self.navigationController);  

self.navigationControllerがnullであるため、Navigation Controllerタイプのローカル変数を割り当てようとしましたが、変数をnull以外(16進値)にすることもできましたが、mapDetailViewをプッシュできませんでした。
私が考えているのは、間違ったテンプレート(ビューベース)を選択したことです。ナビゲーションベース(マスター-詳細)を選択する必要があります。以下の自動生成されたコードは、アプリケーションデリゲートのものです。

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;  

ここでナビゲーションコントローラーにいくつかの変更を加える必要がありますか?
なにか提案を?

4

1 に答える 1

5

あなたの問題は、プッシュを行うためのナビゲーションコントローラーさえ持っていないということです。コードを次のように変更します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
    return YES; 
}
于 2012-05-04T16:59:02.687 に答える