2011-12-18 4 views
0

セルを詳細ビューにプッシュするためにinitWithNibNameを使用していましたが、多数のnibファイルを用意するのではなく、1つのストーリーボードを使用します。下のコードは、セルがクリックされたときに、subcategoriesViewControllerにビューをプッシュすることになっています。セルはjsonデータから動的です。pushViewControllerが押されていない

このエラーは発生しません。ナビゲーションコントロールの問題だと思いますか?テストするだけで、このビューにボタンを追加して動作させました。それをクリックすると、次のビューに移動します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSDictionary *dict = [rows objectAtIndex: indexPath.row]; 


    subcategoriesViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"subcategoriesViewController"]; 
    controller.CATNAME = [dict objectForKey:@"C_NAME"]; 
    controller.CATNUMBER = [dict objectForKey:@"CAT_ID"]; 
    [self.navigationController pushViewController:controller animated:YES]; 
// [controller release]; 
} 

私は原因を見つけたと思います。それを修正する方法を知らない。

このコントローラのtableviewは、実際にはviewControllerのサブビューです。私はこれらのファイルを複製し、TableViewControllerである新しいビューを作成しました。このコードは、TableViewControllerで使用されるとジョブを実行しますが、TableviewがViewControllerのサブビューであるコントローラで使用された場合は実行されません。

テーブルの上に画像を配置したいので、テーブルをサブビューにします。だから、私はこの問題がこの行だと思う:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

ビューの表は参照されません。誰も私にこれを変更する方法を教えて、ビュー内のテーブルを参照することはできますか?

答えて

1

didSelectRow...が呼び出されていない場合は、ビューコントローラがテーブルビューのデリゲートとして設定されていない可能性があります。

これは、UITableViewControllerを使用すると自動的にセットアップされますが、標準のView Controllerを使用する場合は明示的に行う必要があります。

+0

はい。意味あり。私はそれを考えましたが、私は以下のコードを使ってそれを行いました。それで十分ではないですか? @interface categoriesViewController:UIViewController { \t UITableView * tableview; } –

+0

そうですが、テーブルビューにその委任者が誰であるかを伝える必要もあります。これをストーリーボードに接続し、デリゲートコンセントをテーブルビューからビューコントローラにドラッグすることができます。 – jrturton

+0

私はそれをしましたが、理由を述べずにクラッシュし始めました。私は明日、新鮮なスタートを作ると思う。御時間ありがとうございます。 –

0

self.navigationControllerは実際にはnilです。あなたのビュー用のナビゲーションコントローラがないためです。 Projetのナビゲーションコントローラへのポインタを取得し、その上にビューをプッシュする必要があります。

+0

いいえ、それはゼロではありません。 Nslogで確認しました。私はまだ問題が参照していると思います。 –

+0

それはあなたがそう思うナビゲーションコントローラですか? – gsempe

+0

インタフェースビルダーで参照が欠落していました。 –

関連する問題