カスタムUIView、MyViewがあり、その中にいくつかのテーブルビュー(tv1とtv2)があり、両方ともプログラムで追加されています。
loadView で MyView のインスタンスを作成するカスタム UIViewController、MyController があります。
私の目標は次のとおりです。myView は myView.tv1 のデータ ソースおよびデリゲートである必要があります。これは、データ モデルに触れておらず、静的であるためです。
myView.tv2 の内容はデータソースに依存するため、myController は myView.tv2 のデリゲートである必要があります。
各ヘッダーに次を追加しました。
@interface MyController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@interface MyView : UIView <UITableViewDelegate, UITableViewDataSource>
必要なデリゲート メソッドをそれぞれに追加しました。
MyView の init で、そのテーブル ビューを追加し、最初のデリゲートを self に設定します。
tv1 = [[UITableView alloc] initWithFrame:frame1 style:UITableViewStyleGrouped];
tv1.delegate = self;
tv1.datasource = self;
tv2 = [[UITableView alloc] initWithFrame:frame2 style:UITableViewStyleGrouped];
そして、コントローラーで 2 番目のテーブルビューを接続します。
- (void)loadView{
self.view = [[MyView alloc] initWithFrame:myFrame];
[(MyView *)self.view tv2].delegate = self;
[(MyView *)self.view tv2].dataSource = self;
}
これを実行すると、ランタイム エラーが大量に発生します。ページング コントロールについて不平を言うこともあれば、NSCFArray について不平を言うこともあれば、テキストがまったくないこともあります。それは常にクラッシュします。
問題の原因はデリゲートではなく、データソースの設定にあると判断しました。laodView でデータソース行をコメント アウトすると、正常に実行されます (ただし、もちろんコンテンツはありません)。
毎回異なる実行時エラーが発生する原因は何ですか? どこで問題が発生している可能性がありますか?