Komórka UICollectionView nie zawsze jest odświeżana po przewinięciu

Zdefiniowałem w moim Storyboard (iPad) widok, który zawieraUICollectionViewu dołu widoku znajduje się także aUIToolbar. wUICollectionView DodałemUICollectionViewCell (realizowane przez aniPadCellCollectionViewCell klasa), która zawiera inny widok, który jest wykresem Core-Plot (aCPTGraphHostingView klasa).

Mam klasę o nazwie X, która implementujeUICollectionViewDelegate iUICollectionViewDataSource.

W klasie X buduję dla każdej komórki mojego widoku (wViewDidLoad) Wykres Core-Plot i ja mamy następujący kod, aby powiązać wykres z komórkąUICollectionViewCell

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];

MyChart* chart = [_charts objectAtIndex:indexPath.row];

cell.hostingView.hostedGraph = chart.barChart;

return cell;

}

Działa dobrze, wszystkie moje wykresy są poprawnie wyświetlane na ekranie. Problem występuje, gdy użytkownik przewija widok, a następnie jedna lub kilka komórek staje się „pusta”. Naprawdę nie rozumiem dlaczego.

Znalazłem obejście, zamiast dodawaćCPTGraphHostingView wUICollectionViewCell w Konstruktorze interfejsów sam go tworzę, a poprzedni kod to:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];


[cell.contentView addSubview:[_hostingViews objectAtIndex:indexPath.row]];

return cell;

}

Z tym kodem wszystko działa dobrze. Czy są jakieś wyjaśnienia, dlaczego nie działa, gdy dodamCPTGraphHostingView wUICollectionViewCell z IB?

Czy wywołanie „addSubview” jest problemem przy każdym wywołaniu metody? Nie ma przecieków pamięci?

questionAnswers(2)

yourAnswerToTheQuestion