Iphone Прокрутка таблицы с пользовательскими ячейками слишком медленная
У меня возникла эта проблема при развертывании моего приложения на 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.
Любые идеи.
Ответы
Ответ 1
Хорошо, основная проблема с производительностью заключалась в округлении углов подзонов содержимого.
используя QuartzCore:
#import <QuartzCore/QuartzCore.h>
((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11;
Я удалил те и уменьшил размеры элементов управления, чтобы поместиться внутри ячейки разделенной таблицы. и теперь они смотрят вокруг, но текстовое поле и ярлык - нет.
это заметно улучшило мою прокрутку.
Спасибо всем за вашу помощь.
Ответ 2
Когда вы создаете ячейку, вы устанавливаете идентификатор в "ячейку", но когда вы ее деактивируете, вы ищете @ "MyIdentifier". Похоже, вы каждый раз воссоздаете ячейку, хотя это.