2

2つのネストされたUICollectionViewがあります。外部コレクションビューのデリゲートはメインビューコントローラーであり、内部コレクションビューデリゲートは外部コレクションビューのUICollectionCellです。

外側のコレクションビューにはラベルと内側のコレクションビューのみが含まれます。通常、これらは7つあり、内側のコレクションビューには3つまたは4つのセル(3つのラベルを含む)が含まれている必要があります。

問題は、内側のコレクションビューが(外側のビューの最初の2セットのデータに対して)2回だけ更新され、その後繰り返されるように見えることです。

これが外部UICollectionViewのcellForItemAtIndexPathです

- (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;
}

...これが、outUICollectionビューのUICollectionViewCellオブジェクトにある2番目のUICollectionViewのcellForItemAtIndexPathです。

- (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セットでは問題がない理由がわかりません...

4

1 に答える 1

5

これは、マザー(外部)UICollectionViewのデキューメソッドで[UICollectionViewrefreshdata]を呼び出すことで解決されました。

于 2012-12-15T17:57:51.757 に答える