6

次のように、Pinterest のピン ページを実現したいとします。

ピンタレスト

これが私のアプローチです:

  1. UICollectionViewControllerピンのページはUICollectionViewCell
  2. セルは 2 つのコンポーネントで構成されています: ピン情報子 VC && ウォーターフォール子 VC

次に、問題が発生します。子ビューコントローラーを再利用するにはどうすればよいですか?

擬似コード:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
    Pin *pin = self.dataSource[indexPath.row];
    // i have to create a new childVC, based on different indexPath.
    UITableViewController *pinInfoViewController = [[pinInfoViewController alloc] initWithPin:pin];
    [cell updatePinViewWithPin:pin];
    [self addChildViewController:pinInfoViewController];

    // Add waterfall view controller
}

このメソッドが呼び出されるたびに、新しい子ビュー コントローラーが作成されますが、大丈夫ですか、またはそれを改善するにはどうすればよいですか?

4

3 に答える 3

2

私は最近同様の状況に遭遇し、UICollectionView 内の UIViewController で詳述されているようなさまざまなソリューションから選択するのに苦労しました。このパターンをカプセル化したオープン ソース プロジェクトが現在利用できるようです: https://github.com/zats/Voltron。UIViewControllers の UICollectionView を使用することで問題が最もよく解決される場合は、独自のロールを作成するよりも簡単に達成できます。

于 2014-12-12T02:44:10.453 に答える