iphone Прокрутка таблицы с помощью пользовательских ячеек происходит слишком медленно - PullRequest
1 голос
/ 29 ноября 2010

У меня возникла эта проблема при развертывании приложения на iphone, которое не было обнаружено на симуляторе.

это код сотовой связи ...

    - (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSLog(@"beginning cellforRowAtIndexPath for section %d, and cell %d",[indexPath indexAtPosition:0],[indexPath indexAtPosition:1]);

    static NSString *MyIdentifier = @"MyIdentifier";
    NSString *fieldTitle;
    NSString*fieldDescription;
    [_stopWatch start];
    [PersonalSection GetField:&fieldTitle AndValue:&fieldDescription UsingIndexPath:indexPath AndPersonalInformation:_personalInfo];


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"ViewContent" owner:self options:nil];
        cell = tvCell;
        self.tvCell=nil;

        ((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11;
        ((UILabel*) [cell.contentView viewWithTag:2]).layer.cornerRadius=11;
    }


    UILabel*mainLabel=(UILabel*) [cell.contentView viewWithTag:1];
    mainLabel.text=fieldTitle;
    //mainLabel.textColor = [UIColor colorWithRed:0.745 green:0.116 blue:0.176 alpha:1.0];

    UILabel*detailLabel=(UILabel*)[cell.contentView viewWithTag:2];
    detailLabel.text=fieldDescription;
    [_stopWatch stop];
    NSLog(@"---------End cellforRowAtIndexPath");

    return cell;
}

остальное для разделов, и это похоже на возврат 3 или 5, никакого узкого места там нет. так что мне интересно, что так сильно его тормозит. Теперь выборка данных «[PersonalSection GetField: & fieldTitle ...» довольно быстрая, она занимает на iphone максимум 0,1 мс. Проблема в другом, я думаю, что есть способ оптимизировать этот код, и мне интересно, как влияет пользовательская ячейка - это только ячейка с меткой и текстовым полем, связанным с этим ViewController. Любые идеи.

Ответы [ 2 ]

4 голосов
/ 30 ноября 2010

Хорошо, основной проблемой производительности было закругление углов подпредставлений в просмотре контента.используя QuartzCore:

#import <QuartzCore/QuartzCore.h>
((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11;

Я удалил их и уменьшил размеры элементов управления, чтобы они помещались в ячейку секционного стола.и теперь они оглядываются, а текстовое поле и метка - нет.это заметно исправило мою прокрутку.Спасибо всем за помощь.

4 голосов
/ 29 ноября 2010

Когда вы создаете ячейку, вы устанавливаете идентификатор как @ "cell", но когда вы удаляете ее из очереди, вы ищете @ "MyIdentifier". Похоже, вы каждый раз воссоздаете клетку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...