2009-03-30 9 views
8

Testuję po raz pierwszy na prawdziwym urządzeniu, a po naprawieniu pewnych oczywistych problemów z wydajnością utknąłem na tym, jak płynnie przewijać.Jak rozwiązać problem z powolnym przewijaniem w UITableView

To co mam zrobić:

  • Dane są w sqlite
  • Mam małą tablicę z nagłówka
  • mam w każdej tablicy nagłówka listę identyfikatorów z DB

np.

Nagłówek A Ids = 1,2; Header B Id = 3,4

  • ja leniwy obciążenie komórka & obiekt, aby uzyskać dane
  • Zaledwie 10 sztuk są ładowane w czasie
  • Ładowanie jest szybki, tylko przewijanie jest problem

jest to kod na ładowanie komórki:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"ProductCell"; 

    ProductCell *cell = (ProductCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ProductCell" owner:self options:nil]; 

     cell = [nib objectAtIndex:0]; 
    } 

    // Set up the cell... 
    Product *p = [self locateRecord:indexPath]; 

    cell.nameLabel.text = [p.name capitalizedString]; 
    cell.codeLabel.text = p.ref; 

    if ([self.selectedProducts objectForKey:[NSNumber numberWithInt:p.Id]]) { 
     OrderDetail *d = [self findDetail:p]; 

     cell.qty.text = [NSString stringWithFormat:@"%ld",[d.qty integerValue]]; 
    } 

    return cell; 
} 

- (id) locateRecord:(NSIndexPath *)indexPath { 
    NSNumber *theId; 
    NSUInteger pos = [indexPath row]; 

    id o; 

    if (self.results) { 
     theId = [self.results objectAtIndex:pos]; 
    } else { 
     NSString *key = [[self.index objectAtIndex:[indexPath section]] objectAtIndex:0]; 
     NSArray *data = [self.cache objectForKey:key]; 

     theId = [data objectAtIndex:pos]; 
    } 

    Db *db= [Db currentDb]; 

    o = [db loadById:[self returnItemClass] theId:[theId intValue]]; 

    return o; 
} 

Odpowiedz

5
  1. Napięcie wstępne dane
  2. Do your own drawing
+0

Więc to znaczy, że jest no-no budowniczy użyciu interfejs do układu komórki? – mamcx

+0

Jeśli chcesz prędkości przewijania według Twitterific, to bądź moim gościem. Jeśli chcesz, aby Twoje stoły przewijały się jak masło, wykonaj swój własny rysunek. =) –

+0

Wiem, że to brzmi strasznie, ale wcale nie jest trudne. –

Powiązane problemy