マスター詳細アプリケーション テンプレートを使用してプロジェクトを作成しました。このプロジェクトは、iPhone と iPad の両方を対象としています。
My Master View には、DB データから取り込まれたテーブル ビュー コントローラーが含まれています。これまでのところ問題はありません。
詳細ビューでは、デフォルトのビュー コントローラーをコレクション ビュー コントローラーに置き換えました。マスター テーブル ビューのすべての行で、コレクション ビューに多数のセルを作成したいと考えています。
ストーリーボードでは、iphone バージョンにはテーブルとコレクション (マスター/詳細) コントローラーの間にセグエがあり、すべて正常に動作します。
MasterViewController.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Inbound *current = inbounds[indexPath.row];
[[segue destinationViewController] setDetailItem:current];
}
}
カスタム オブジェクト「インバウンド」がマスター ビューから詳細ビューに渡されます。これが発生すると、詳細/コレクション ビュー コントローラーがセルを更新します。
DetailViewController.m
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
//Go round the DB and update the cells
}
私の問題は、iPad バージョンの分割ビューにあります。ストーリーボードでは、マスター ビューと詳細ビューの間にセグエではなく関係があります。テーブルの行を選択したときに実行される唯一のコードは次のとおりです。
MasterViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
Inbound *current = inbounds[indexPath.row];
self.detailCollectionViewController.detailItem = current;
NSLog(@"%@",@"table cell clicked");
}
}
カスタムの「インバウンド」オブジェクトが詳細ビュー コントローラーに適切に渡されていることがわかります。しかし、何らかの理由で、コレクション ビューが更新されません。
何か案は?