Проблема с вложенными UICollectionViews

У меня есть 2 вложенных UICollectionViews. Делегатом для внешнего представления коллекции является главный контроллер представления, а делегатом внутреннего представления коллекции является UICollectionCell внешнего представления коллекции.

Во внешнем представлении коллекции есть только метка и внутреннее представление коллекции - обычно их семь, внутреннее представление коллекции должно содержать 3 или 4 ячейки (содержащие 3 метки).

Проблема в том, что внутреннее представление коллекции обновляется только дважды (для первых двух наборов данных во внешних представлениях), после чего они повторяются.

Вот cellForItemAtIndexPath для внешнего UICollectionView

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Main Tide Data Table Cell";

    TideDataTableCell* tideDayDataCell = [self.tideDataTable dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    tideDayDataCell.tideDataTable.delegate = tideDayDataCell;
    tideDayDataCell.tideDataTable.dataSource = tideDayDataCell;
    tidalDate* tideDate = self.tidalDates[indexPath.row];
    tideDayDataCell.thisTidalDate = tideDate;
    tideDayDataCell.dayLabel.text = tideDate.dateString;
    tideDayDataCell.averageTideHeight = self.avgTideHeight;

    tideDayDataCell.backgroundColor = [UIColor whiteColor];
    self.tideDataTable.backgroundColor = [UIColor lightGrayColor];
    return tideDayDataCell;
}

... и вот cellForItemAtIndexPath для второго UICollectionView, который находится в объекте UICollectionViewCell для выходного представления UICollection!

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSString* CellIdentifier = @"Tide Info Table Cell";

    TidalTideTableCell* tidalTideTableCell = [self.tideDataTable dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    tidalTideTableCell.timeTideLabel.text = @"";
    tidalTideTableCell.heightTideLabel.text = @"";
    tidalTideTableCell.hwlwTideLabel.text = @"";
    self.tideDataTable.backgroundColor = [UIColor clearColor];
    Tide* tide = self.thisTidalDate.tides[indexPath.row];
    tidalTideTableCell.heightTideLabel.text = [[NSNumber numberWithDouble:tide.height] stringValue];
    if (tide.height > self.averageTideHeight)
    {
        tidalTideTableCell.hwlwTideLabel.text = @"HW";
    }
    else
    {
        tidalTideTableCell.hwlwTideLabel.text = @"LW";
    }
    tidalTideTableCell.timeTideLabel.text = tide.date;
    tidalTideTableCell.backgroundColor = [UIColor clearColor];
    return tidalTideTableCell;
}

Надеюсь, в этом есть смысл - спросите, не так ли ... Я просто не понимаю, почему это нормально для первых 1 наборов данных, а затем нет для следующих 5 ...


person HillInHarwich    schedule 06.12.2012    source источник


Ответы (1)


Это было решено путем вызова [UICollectionView refreshdata] в методе удаления из очереди для материнского (внешнего) UICollectionView.

person HillInHarwich    schedule 15.12.2012
comment
Были ли у вас проблемы с управлением выделением при использовании этого дизайна? - person marco alves; 07.10.2013
comment
Привет ... Представления коллекции, которые я использую, не имеют функции для выбора - они отображают таблицу данных. Один совет - убедиться, что используемые вами делегаты настроены правильно и правильно распространяются (в зависимости от того, где вы действуете в соответствии с выбором пользователя). - person HillInHarwich; 07.10.2013
comment
Действительно. Это сложно. Чтобы получить правильный рендеринг выборок, нужно обрабатывать их в представлении самой внешней / родительской коллекции. - person marco alves; 22.10.2013
comment
О каком методе удаления из очереди вы имеете в виду? Можете ли вы вставить свой в ответ для справки? Извините, я знаю, что это похоже на годы спустя ... - person Adama; 25.09.2014
comment
Потратил столько времени на эту проблему. И все же решение было таким простым: | - person tufyx; 19.02.2015