1

私はObjective-Cを初めて使用し、いくつかのビューを持つアプリの開発を始めています。ファイルなしで100%プログラムで作成したいと思いXIBます。画面用のクラスを作成する必要があることは理解していますがViewControllers、それを使用してナビゲーションを管理する方法をお聞きしたいと思います。ViewControllerを含むものがあるとしましょうtableView。そして、次の画面を作成したいと思います。だから私rowtableViewControllerクラスの呼び出しでそれを理解しています

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //... }

しかし、次の画面はどうですか?まだ持っていません。「準備完了」ViewControllerクラスを作成する必要がありますか?この場合のナビゲーションの処理方法は?

4

3 に答える 3

3

あなたの場合、セルが選択されると、次のようになります。

  • 次のView Controllerの新しいインスタンスを作成し、
  • この新しいインスタンスを UINavigationController スタックにプッシュします。

したがって、最初に、最初のビュー コントローラー (テーブル ビューを持つもの) が UINavigationController に含まれていることを確認する必要があります。

// AppDelegate, in applicationDidFinishLanching:

UIViewController *firstViewController = [[[MyCustomTableViewController alloc]
                                          initWithNibName:nil bundle:nil]
                                         autorelease];
UINavigationController *navigationController = [[[UINavigationController alloc]
                                                 initWithRootViewController:firstViewController]
                                                autorelease];

[self.window setRootViewController:navigationController];

次に、テーブル ビューのセルが選択されたら、次のように記述できます。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIViewController *nextViewController = [[[MyNextViewController alloc]
                                             initWithNibName:nil bundle:nil]
                                            autorelease];

    [self.navigationController pushViewController:nextViewController
                                         animated:YES]

}
于 2012-04-26T08:52:23.560 に答える
2

Apple のドキュメントを必ず読んでください: View Controllers Programming Guide

基本的に、テーブル ビュー コントローラー (コンテンツビュー コントローラー) をナビゲーション コントローラー (コンテナービュー コントローラー)に埋め込む必要があります。

次に、-tableView:didSelectRowAtIndexPath: で、新しいコンテンツビュー コントローラーをインスタンス化し、ナビゲーション コントローラーを介して現在のテーブル ビュー コントローラーにプッシュし、次のようなメッセージを表示します。

[[self navigationController] pushViewController:<#myNextViewController#> animated:YES];

Apple からのコード サンプルも必ず読んでください (一部は非常に薄いので、理解しやすいです)。

于 2012-04-26T08:53:51.727 に答える
-1

私は IB が嫌いで、IB なしでアプリを作成するのに苦労しましたが、ワークフローに組み込まれているため、歯を食いしばって使用する方が簡単であることがわかりました。ただし、IB を使用せずに開発する方法をさまざまな程度で説明している投稿があります。たとえば、次のとおりです。

于 2012-04-26T08:56:40.150 に答える