pushでつなぐ

| コメント(0) | トラックバック(0)

「Navigation-based Application」テンプレートで作成したアプリをpushでつなぐには、

  1. まず、「classes」を選択して、「追加」>「新規ファイル」>「UIViewControllersubclass」を選択。オプションは必要に応じてチェックを入れる。「次へ」。
  2. ファイル名を決める。「UIViewController」のサブクラスなので、ファイル名は「xxxViewController」とした方がわかりやすいと思う。
  3. 「classes」に1組の「xxxViewController.h」「xxxViewController.m」が追加されたら、pushする側の「.m」ファイルにpushされる側の「.h」ファイルをインポートする。

    ex.「RootViewController.m」

    #import "xxxViewController.h"

     
  4. 続けて、- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPathメソッドで「xxxViewController」クラスのインスタンスを生成し、そのインスタンスを「navigationController」の「pushViewController」メソッドの引数にセットする

    xxxViewController *xxxViewController=[[xxxViewController alloc] initWithNibName:@"xxxViewController" bundle:nil];
    [self.navigationController pushViewController:xxxViewController animated:YES];
    [xxxViewController release];

これでいくつでも「viewController」を追加できる。

要するに、pushされる側の「viewController」を生成し、pushする側の「.m」ファイルにそのクラスの「.h」ファイルをインポート。「didSelectRowAtIndexPath」でpushするだけである。

 多くの場合「2」のオプションでは「UITableViewController subclass」にチェックを入れると思うが、その場合、「- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView」メソッドと「- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section」メソッドを返り値を設定しないと、エラーが出てアプリは起動しない。わからなければ、とりあえず「return 1;」としておけばエラーは出ない。

pushViewController」は「navigationController」がもつメソッドのため、「navigationController」が「AppDelegate」で生成され、「window」のサブビューに追加(addSubview:)されていないと使用できない。「Navigation-based Application」テンプレートで作成した場合には、初めから生成、接続されているため、気にする必要はない。

また、「navigationController」は一度、「window」のサブビューに追加されてしまえば、追加するビュークラスで新たに生成、接続する必要はない。

トラックバック(0)

トラックバックURL: http://www.ayabin.jp/mt5/mt-tb.cgi/80

コメントする

このブログ記事について

このページは、webmasterが2010年10月30日 22:38に書いたブログ記事です。

ひとつ前のブログ記事は「強制終了」です。

次のブログ記事は「CoreData取り扱い注意」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。