Обнаружение касания ячейки UITableView, содержащейся в UICollectionView - PullRequest
0 голосов
/ 21 октября 2019

Я создаю приложение для изучения китайского языка с разделом для правильного произнесения определенных звуков. Чтобы организовать эти звуки в таблицу, я создал UICollectionView, где каждый UICollectionViewCell содержит UITableView.

Каждый UICollectionViewCell действует как столбец и содержит UITableView.

Каждый UITableViewCell действует как строка в каждом столбце.

Это приводит к следующему виду.

UICollectionView containing UITableViews

Однако, хотя я легко могу обнаружить касания на каждом UICollectionViewCell, используя collectionView:didSelectItemAtIndexPath:, я не могу обнаружить никаких касаний на UITableViewCell с в течение.

Преобразую ли я представление в ячейкечтобы быть кнопкой, или я как UITapGestureRecognizer, или использую ли я функцию tableView:didSelectItemAtIndexPath, в UITableView.

не обнаруживаются никакие касания. Как я могу позволить своему коду правильнообнаружить эти прикосновения на UITableViewCell с в UICollectionView?

Спасибо!

Обновление 1:

Вот @интерфейсфайл столбца .h (UICollectionViewCell)

@interface PronounciationColumn : UICollectionViewCell <UITableViewDelegate, UITableViewDataSource>

В .m UICollectionViewCell для делегата и источника данных tableView установлено значение self.

Обновление 2:

У другого пользователя была действительно аккуратная идея установить делегата tableView для его собственного collectionViewCell, используя следующий код:

- (PronounciationColumn *)collectionView:(nonnull UICollectionView *)collectionView cellForItemAtIndexPath:(nonnull NSIndexPath *)indexPath {

    PronounciationColumn *column;
    NSString *columnIdentifier = [self getIdentifier:collectionView];
    if (column == nil) {
        column = (PronounciationColumn *)[collectionView dequeueReusableCellWithReuseIdentifier:columnIdentifier forIndexPath:indexPath];
        column.arrayOfFinals = [[self getArrayOfPinyins:collectionView] objectAtIndex:indexPath.item];
    }
    column.tableOfFinals.delegate = column;
    column.tableOfFinals.dataSource = column;
    return column;
}

TableView продолжаетсяоднако для правильного заполнения касания по-прежнему не обнаруживаются в ячейках, так как tableView:didSelectRowAtIndexPath: все еще не вызывается.

...