Zelle von UICollectionView wird nach einem Bildlauf nicht immer aktualisiert
Ich habe in meinem Storyboard (iPad) eine Ansicht definiert, die a enthältUICollectionView
am unteren Rand der Ansicht gibt es auch eineUIToolbar
. In demUICollectionView
Ich habe a hinzugefügtUICollectionViewCell
(umgesetzt von einemiPadCellCollectionViewCell
Klasse), die eine andere Ansicht enthält, die ein Core-Plot-Diagramm ist (aCPTGraphHostingView
Klasse).
Ich habe eine Klasse namens X, die das implementiertUICollectionViewDelegate
undUICollectionViewDataSource
.
In der Klasse X baue ich für jede Zelle meiner Ansicht (inViewDidLoad
) Das Core-Plot-Diagramm und ich haben den folgenden Code, um das Diagramm mit der Zelle des zu verknüpfenUICollectionViewCell
- (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;
}
Es funktioniert gut, alle meine Grafiken werden korrekt auf dem Bildschirm angezeigt. Das Problem tritt auf, wenn der Benutzer durch die Ansicht scrollt und eine oder mehrere Zellen "leer" werden. Ich verstehe wirklich nicht warum.
Ich habe eine Problemumgehung gefunden, anstatt das hinzuzufügenCPTGraphHostingView
in demUICollectionViewCell
im Interface Builder erstelle ich es selbst und der vorherige Code wird:
- (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;
}
Mit diesem Code funktioniert alles gut. Gibt es Erklärungen, warum es nicht funktioniert, wenn ich das hinzufüge?CPTGraphHostingView
in demUICollectionViewCell
mit dem IB?
Ist es ein Problem, bei jedem Aufruf der Methode "addSubview" aufzurufen? Keine Speicherlecks?