Ich habe eine einfache Zelle - entworfen in IB - und mit dem Wiederverwendungs-Identifizierungs-Set. Der folgende Code funktioniert ganz gut. Wie auch immer - die NSLog() zeigt, dass die Ergebnisse nie zwischengespeichert werden.dequeueReusableCellWithIdentifier: Bezeichner, der keine loadNibNamed-Zelle aufnimmt
Table View-Controller-Klasse:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
switch/case for various cell types
{
Foo * item = [results objectAtIndex:indexPath.row];
return [MyCell tableView:tableView populatedCellWith:item];
}
}
MyCell Klasse ..
+(UITableViewCell *)tableView:(UITableView *)tableView populatedCellWith:(Foo *)item
{
static NSString * identifier = @"XXX";
MyCell *cell = (MyCell *) [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
NSArray * items = [[NSBundle mainBundle] loadNibNamed:@"MyCell"
owner:self options:nil];
cell = [items objectAtIndex:0];
assert(cell && [cell.reuseIdentifier isEqualToString:identifier]);
NSLog(@"That was a load - rather than a nice cache for %@", self.class);
}
fill out some stuff.
return cell;
}
Warum ist dies - wie es die Dinge viel effizienter macht?
Danke,
Dw.
So sind die NSLog mehr Sie verwenden sehen als einmal? Ich versuche nur, deine Frage zu klären. –
Ja, tatsächlich - und sie wurden mit einer Zellenkennung eingerichtet (was das 'assert' überprüft). –