2011-08-11 8 views
1

私は、ユーザーが選択した画像のサムネイルを選択して表示できるスプリットビューアプリを持っています。 Interface Builderを使用してdetailViewControllerにUIButtonを配置しました。このボタンを押すと、画像の全画面表示に変更します。私はFullViewControllerと呼ばれる新しいView Controllerをセットアップして、すべてが接続されていると思った。問題は、ナビゲーションコントローラがnullであることです。私は、次のようにAppDelegate.mを調整:ナビゲーションコントローラがnull

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
// Override point for customization after app launch. 
// Set the split view controller as the window's root view controller and display. 
self.window.rootViewController = self.splitViewController; 
UINavigationController *nvcontrol =[[UINavigationController alloc] initWithRootViewController:fullViewController]; 
[window addSubview:nvcontrol.view]; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

これは、ボタンが押されたときに呼び出されDetailViewController.m内の関数です。ナビゲーションコントローラはここでヌルになります。

//Function called when button is pressed - should bring up full screen view 
- (IBAction) pressFullViewButtonFunction: (id) sender{ 
//viewLabel.text = @"Full View";  
if (fullViewController == nil){ 
    FullViewController *fullViewController = [[FullViewController alloc] initWithNibName:@"FullViewController" bundle:[NSBundle mainBundle]]; 
    NSLog(@"fullViewController is %@", fullViewController); 
    self.fullViewController = fullViewController; 
} 
NSLog(@"self.navigationController is %@",self.navigationController);//this is null 
[self.navigationController pushViewController:self.fullViewController animated:YES]; 

}

私はこの問題を解決するかどうかはわかりません。 AppDelegateのカップルラインを追加しようとしましたが、実行時にルートビューのテーブルが表示されず、ポートレートビューとランドスケープビューの切り替えが正しく行われなくなりました。

明確にするのに役立ちますと、残りのコードをすぐに利用できます。私に知らせて!おかげさまで あなたは問題を特定することはできません投稿、しかしself.navigationControllerための2つの一般的な理由がnilであることをコードから

答えて

1

は以下のとおりです。

  1. あなたはナビゲーションコントローラにself後ろにオブジェクトをプッシュしていませんでした最初の場所。ナビゲーションコントローラはスプリットビューコントローラのサブビューとして追加されているので実際そうだ。可能であれば逆のことを意味します...

  2. (サブケース1)selfの後ろにあるオブジェクトをpresentViewControllerModallyで示しています。

私は「self背後にあるオブジェクトは、」私はpressFullViewButtonFunctionが定義されたクラスのインスタンスを意味すると言います。サイドノートでは

あなたはより多くの助けが必要な場合は、ナビゲーションコントローラへのあなたのコントローラーを押して、コードをポスト...

、あなたが行う場合:

UINavigationController *nvcontrol =[[UINavigationController alloc] initWithRootViewController:fullViewController]; 

nvcontrolではありませんあなたはリークしている。

希望します。

関連する問題