2012-02-24 23 views
0

私はViewBasedアプリケーションを持っています。 UIViewControllerの1つにUITableViewを追加しました。それはデータを表示し、すべてのデリゲートメソッドなどを実装しました。私の問題は、detailViewを表示したいときです。ちょうどそれが起こらないのです。私のコード:UIViewControllerでNavigationControllerなしでDetailViewをプッシュする方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     DetailViewController *detailViewController =[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 

     NSLog(@"DidSelectRowAtIndexPath"); 

     // Pass the selected object to the new view controller. 
     [self.navigationController pushViewController:detailViewController animated:YES]; 
     [detailViewController release]; 
    } 

私はnavigationControllerを必要とするが、私は1つを持っていないと私はプログラム的に1を追加しようとunsucessfulだったことがわかります。私はappDelegateのいずれかに持っていないので、私の質問は詳細ビューを表示するために追加する必要がありますか?はいの場合は、その方法をコードサンプルでお知らせください。 そうでない場合は、他の方法はありますか?

私はiOSを初めて使っているので、ここで少し失われています。 助けてください!

UINavigationController * controller = [[UINavigationController alloc] initWithRootViewController:detailViewController]; 

[[detailViewController] release]; 

[self presentModalViewController: controller animated: YES]; 

をごpushViewControllerを使用したい場合、あなたはすでにあなたの見解を取り巻くナビゲーションコントローラを持っている必要があります。ちょうどこの詳細ビューのために、あなたはこのような何かを必要とするプログラムでナビゲーションコントローラを追加するには

答えて

1

から始まる

+0

おかげでたくさん!それは私を助ける! presentModalViewControllerを使用して、サンプルのように右から左にプッシュする方法はありますか? – iPhoneNoob

+0

次のようなヘルプがあります:http://stackoverflow.com/questions/237310/how-can-i-change-the-animation-style-of-a-modal-uiviewcontroller –

+0

ありがとう!それは私をたくさん助けます! – iPhoneNoob

0

ナビゲーションコントローラFIRSTを追加する必要があります。マスターテーブルがnavコントローラのルートビューコントローラになり、テーブルの行をタップすると、別のビューコントローラがnavスタックにプッシュされます。

最初にマスターテーブルはどのようにアプリケーションに入りますか?ペン先を使用している場合は、古いコントローラをnavコントローラの子として追加したnavコントローラのView Controllerを変更するのは簡単です。

+0

navCを追加する場所と方法を教えていただけますか?私はそれを追加しようとしましたが(私のコードを参照してください)、動作しませんでした。私はUITableViewControllerを使用せず、私のappDelegateにnavCを追加しませんでした。私はペン先を使用してnavCを追加しようとしましたが、すべてをリンクする方法はわかりませんでした。 -/ – iPhoneNoob

+0

マスターはUITableViewControllerですか?そのUITableViewControllerはどのように最初に表示されますか? – jsd

0

あなたはそうのようなアプリデリゲートのapplication:didFinishLaunchingWithOptions:メソッド内で作業してプログラムを作成することができます

UITableViewController *tableViewController = [[[WhateverYourSubclassVCIsCalled alloc] init] autorelease]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableViewController]; 
window.rootViewController = navController; 
[window makeKeyAndVisible]; 
+0

私はUITableViewControllerを使用していません。私はViewControllerに代理人を追加しました。そして私には「窓」はありません。それはviewControllerのすべてです。 appDelegateを経由せずにVCにnavControlerを追加する方法はありますか? – iPhoneNoob

+0

さて、その場合は、あなたのサブクラス名がUITableViewControllerのかわりに使用してください。そして、実際にハンドルを持っているかどうかにかかわらず、窓があります。現在のテンプレートでは、アプリケーションデリゲートのインスタンス変数に '_window'という名前を使用しています。 – lyricsboy

+0

あなたは、逆方向のナビゲーションコントローラと他のビューコントローラとの関係について考えていると思います。ナビゲーションコントローラは、他のビューコントローラを含み、それらをプッシュしてポップすることによって「スタック」を管理するように設計されています。したがって、あるクラス(通常はアプリケーションデリゲート、またはXIB経由で間接的に)を作成して、独自のカスタムView Controllerを持つNavコントローラをルートとして作成して設定したいとします。 – lyricsboy

関連する問題