Как настроить UITableViewCell без замораживания в UITableView
Я настроил ячейку табличного представления, создал файл nib и соответствующие ему файлы.h и.m. Все отлично работает, кроме медлительности при прокрутке, в чем может быть проблема, как избежать зависания?
А также
obj = [self.listData objectAtIndex: [indexPath row]];
if (obj != nil) {
static NSString *CellIdentifier;
if (obj->status == status1) {
CellIdentifier = @"Cell_italic";
} else if (obj->status == status2) {
CellIdentifier = @"Cell_cent";
} else {
CellIdentifier = @"Cell";
}
custom_cell *cell = (custom_cell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"custom_cell" owner:self options:nil];
cell = [nib objectAtIndex:0];
char file_path[MAX_PATH]; // Holds file path.
memset(file_path, 0, MAX_PATH);
// Get path
// Set Image
UIImage *cellImage = [UIImage imageWithContentsOfFile:fle_path];
if (cellImage != nil) {
[cell.image_view setImage:cellImage];
}
NSString *combined_name = [NSString stringWithCString:obj->combined_name encoding:NSASCIIStringEncoding];
NSString *email = [NSString stringWithCString:obj->email encoding:NSASCIIStringEncoding];
// Set name
if (obj->status == status1)
{
cell.name_label.text = combined_name;
cell.name_label.font = [UIFont fontWithName:@"Georgia-Italic" size:18];
cell.email_label.text = email;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
. . .
. . .
}
dequeueReusableCellWithIdentifier всегда возвращает ноль, правильно? Без настройки я видел, что это не было ноль много раз, теперь оно всегда возвращает ноль.
1 ответ
Загрузка изображений каждый раз, поэтому прокрутка таблицы UITableView
Вы можете реализовать ленивую загрузку многими способами, см. ниже ссылки, и примеры могут помочь вам: -
https://developer.apple.com/library/ios/
https://github.com/rs/SDWebImage //README Section says,how to use it in your app.
https://github.com/nicklockwood/AsyncImageView/
Вы также можете загрузить изображение в фоновом процессе, используя поток пользовательского интерфейса
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_async(backgroundQueue,^{
// background process
image = [NSData dataWithContentsOfFile:imageName];
dispatch_async(mainQueue,^{
// always update GUI from the main thread
// uiimageview.image = image.... etc
});
});