ビューとビューコントローラの責任について混乱しています。
私はMVCに関するAppleのドキュメントを読みましたが、私の質問に答える明確な例を示していません。
データベースからデータを取得し、UITableViewを使用して表示するSimpleDatabaseアプリケーションがあります。
マイビューはカスタムビューです。これは基本的に、データベースから計算されたデータを表示するUIViewに隣接して表示されるUITableViewのコレクションです。
私のviewControllerは、すべてのUITableviewのデリゲートを実装します。
viewController内のすべてのUITableviewを含むコンテナビュー(UIVIew)があります:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
{
UIView *containerForAllview = [tableview superview];
//container view contains list of dataset . each of which is displayed
// by it's own respective tableview
if(tableview = atableview){
array = containerForAllview.getDatafortable(atableview);
}else if(tableview = btableview){
array = containerForAllview.getDatafortable(btableview);
}
/// like this for few more tables
// configure cells using this array
cell.text = [array objectAtIndex:indexpath.row].name;
}
自分のデザインに何か怪しい気がします。
- View Controllerは、ビュー階層全体を認識する必要がありますか?最初は、ContainerViewがすべてを抽象化すると思っていました。
- (ユーザーイベントの処理はその責任です)テーブルビューの委任は、containerViewまたは私のビューコントローラーによって実装する必要があります。
- ビューがイベントを処理する場合、UIViewには、MVCアーキテクチャの概念に違反するデータモデルの参照が必要です。
- コンテナビューがテーブルビューをフィードするためにリストの配列を保持しているのは間違っていますか、それともそのロジックをビューコントローラに移動する必要がありますか?