通常、ビューコントローラはtableViewを制御します。私はあなたがそこに複数のテーブルビューとそれぞれのロジックを収めようとしていると思います。代わりに、各テーブルのコントローラを作成するだけです。
まず、UIViewControllerテンプレートを使用してメインビューコントローラを作成します(TableViewControllerは使用しないでください)。 XIBを使用してTableView要素を追加するか、コードを使用してUITableViewインスタンスを作成します。
デリゲートとデータソースのプロトコルに準拠したクラスを作成します。これはビューコントローラである必要はありません。例:
// MiniTVC.h
@interface MiniTVC : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) NSArray *array;
-(id) initWithTableView:(UITableView*)tableView array:(NSArray*)array;
@end
といつものように、デリゲートとデータソースのメソッドを実装します。使用
tableView:heightForRowAtIndexPath:
numberOfSectionsInTableView:
tableView:numberOfRowsInSection:
tableView:cellForRowAtIndexPath:
その後戻ってあなたのメインビューコントローラに、あなたはインターフェイスデザイナーから作成(またはフック:あなたは、少なくとも以下のものが必要IBOutlets)tableViewを開き、デリゲートとデータソースをMiniTVCクラスに設定します。例えば、
// sample table created by code
CGRect frame = CGRectMake(50,50,100,100);
UITableView *tableView = [[UITableView alloc] initWithFrame:frame]
[self.view addSubView:tableView];
// set the datasource/delegate
MiniTVC *miniTVC = [[MiniTVC alloc] initWithTableView:self.tableView array:someArray];
tableView.dataSource = self.miniTVC;
tableView.delegate = self.miniTVC;
このプロセスを繰り返して、カスタムUITableViewCell内部から別のUITableView + MiniTVCを作成することができます。または、UITableViewCellをテーブルの委譲先/データソースに準拠させ、そこにメソッドを実装することもできます。
Btwでは、tableviews内にtableviewsを作成するのは少し珍しいことです。両方ともUIViewScrollのサブクラスなので、予期しない動作につながる可能性があります。自分で試したことはありません。
新しいプロジェクトを作成するときに見つかったデフォルトのコードを見てください。そうするコードはすでにあります。 –
@AntwanvanHoudt私は基本的なテーブルビューで作業する方法を知っていて、リンゴのサンプルtableviewsuiteも調べました。私は私が行ったことの私のポストを更新しました。 – merrill