21

UITableView各セルに が含まれている がありますUICollectionView

UITableView縦にスクロールし、入れ子になったものUICollectionViewを横にスクロールできますが、 で aを選択できませんUICollectionViewCellUICollectionView

では選択が無効になり、UITableViewでは有効 (既定の状態) になりUICcollectionViewます。

UICollectionView's collectionView:didSelectItemAtIndexPath:が呼び出されることはありません。

4

8 に答える 8

0

これがうまくいったので、私のソリューションを皆さんと共有したいと思いました。

UITableViewと入れ子に必要なデリゲートとデータソースを設定した後、次のように最初の選択可能なビューUICollectionViewを作成できますUICollectionView

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  {
    ...
    [tableViewCell bringSubviewToFront:tableViewCell.yourCollectionView];
    return cell;
}

これにより、UICollectionView デリゲートを介して選択できる最初のものになります

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath; 

ビューの他の部分は、UITableViewデリゲートを使用して選択されます

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

お役に立てれば!

于 2016-07-19T15:54:07.840 に答える
0

didSelectRowAtIndexPathこれを解決できた方法は、セルにタップジェスチャ認識機能を追加して、呼び出されないに依存するのではなく、タップを手動で処理することでした。

迅速

let tapRecognizer = UITapGestureRecognizer(target: self, action: "cellTapped:")
tapRecognizer.numberOfTapsRequired = 1
cell.addGestureRecognizer(tapRecognizer)

Objective-C

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)];
tapRecognizer.numberOfTapsRequired = 1;
[cell addGestureRecognizer:tapRecognizer];

タップされているセルをcellTapped:メソッドで処理できるようになり、 を介してタップされたセルへの参照を取得できますtapRecognizer.view

于 2015-01-13T11:42:49.493 に答える
-1

まず、必要なデータ ソースとデリゲートが提供されていることを確認してください。次に、特定の数のテーブル ビュー セルでコレクション ビューを使用している場合は、プロトタイプ セルに直接配置できます。セルに適切な制限 (幅) があることを確認してください

于 2015-04-03T12:44:14.553 に答える
-1

delaysContentTouchesforを無効にして、コレクション ビューが正しく設定されてtableViewいることを確認してください。delegate

于 2016-11-16T23:43:05.753 に答える
-1

ストーリーボードとプログラムの両方でテストしましたが、期待どおりに機能しています。タップされた領域に応じて、collectionView:didSelectItemAtIndexPath: または tableView:didSelectRowAtIndexPath を受け取ります。少なくとも新しいSDK(私のものは11.4)では修正されているようです。

于 2018-11-09T13:46:10.863 に答える
-3

これはまったく問題になりません。カスタム ジェスチャ レコグナイザは必要ありません。テーブルビューの選択を無効にする必要はありません。

必ず:

  1. ストーリーボードまたはコードでテーブルビューをセットアップし、そのデータソースとデリゲートを設定します
  2. テーブルビューセルをデキューした後の cellforrowatindexpath で、対応するコレクションビューへの参照を取得し、その (コレクションビュー) データソースとデリゲートを設定します
  3. tableviews と collectionviews デリゲートの didselect メソッドを実装し、それらの呼び出しをログアウトして動作を確認します

問題がないことを確認するためにその答えを書く前に、小さなサンプルプロジェクトを実装しました。それでも問題が解決しない場合は、アップロードできます。

幸運を!

于 2015-04-22T13:26:13.770 に答える