0

プロジェクト

私は、ルート テーブル ビューと詳細テーブル ビューを備えたナビゲーション コントローラー ベースの比較的単純な iPhone OS プロジェクトに取り組んでいます。メイン リストのアイテムをタップすると、プッシュされたテーブル ビューでその詳細が表示されます。

セットアップ

ビュー コントローラーの目的が曖昧にならないように、両方のビューのデータ ソースを独自のオブジェクトに分割しました。これを行うと、これらのメソッドは別のファイルにあるため、テーブル ビューにはデータ ソースがなくなりました。そのため、適切な XIB ファイルに各データ ソース クラスのインスタンスを作成し、オブジェクト アイテムを使用しました (ドラッグして、そのクラスを設定します)。 . 次に、実際にテーブルビューをデータ ソースに接続するために、Interface Builder で各テーブルビューの dataSource アウトレットを黄色のデータ ソース オブジェクトに設定します。テーブル ビュー デリゲートは引き続きビュー コントローラーに設定されます。

問題

ルート テーブル ビューは問題なく動作しますが、行をタップして詳細ビューにプッシュすると、データ ソース オブジェクトが期待どおりにインスタンス化され、すぐに解放され、クラッシュが発生します (解放されたオブジェクトで numberOfSectionsInTableView: が呼び出されます)。Interface Builder でのデータ ソース オブジェクトの作成とテーブルビュー接続で示されているように、詳細ビューですぐに必要なときにデータ ソースが自動的に割り当て解除される理由がわかりません。さらに困惑しているのは、まさにこのアプローチがルート テーブルビューに対してうまく機能することです!

質問

これが発生する原因となる、私が見逃している明らかなものはありますか?それとも、これはテーブル ビュー コントローラーのデータ ソースをインスタンス化する正しい方法ですか? ビューのみに関係するビューコントローラー内からそれを行うのは、オブジェクト指向プログラミングが貧弱であるように思われます。すべてを 2 つのテーブル ビュー コントローラー クラスに詰め込むことができ、おそらくうまくいくでしょう。

ありがとう!

4

1 に答える 1

1

detail-table-view-controller データソースのプロパティはどのように見えますか? あなたはそれを保持していますか?問題は、あなたが持っている可能性があります:

@property (nonatomic, assign) IBOutlet id <UITableViewDataSource> dataSource

それ以外の:

@property (nonatomic, retain) IBOutlet id <UITableViewDataSource> dataSource
于 2010-04-10T06:26:29.983 に答える