2009-03-30 2 views
8

Я тестирую в первый раз на реальном устройстве, и после устранения некоторых очевидных проблем с производительностью я застрял в том, как делать плавную прокрутку.Как решить медленную прокрутку в UITableView

Это то, что я делаю:

  • Данные в SQLite
  • У меня есть небольшой массив с заголовком
  • У меня есть в каждом массиве заголовка списка идентификаторов из Db

eg

Абонент A Ids = 1,2; Заголовок B Идентификаторов = 3,4

  • Я ленивая нагрузкой клеткой & объект, чтобы получить данные
  • Всего лишь 10 экземпляров загружаются в то время
  • Загрузка является быстрой, только прокрутками является проблемой

Это код на нагрузке клетки:

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

ответ

5
  1. Preload данные
  2. Do your own drawing
+0

Так это значит, что не представляет никакой не строитель использовать интерфейс для компоновки ячейки? – mamcx

+0

Если вы хотите, чтобы скорость передачи данных была такой же, как и у вас, будьте моим гостем. Если вы хотите, чтобы ваши таблицы прокручивались, как масло, тогда сделайте свой собственный рисунок. =) –

+0

Я знаю, это звучит страшно, но это совсем не сложно. –

Смежные вопросы