如果额外填充,我的tableView
会滚动延迟。最多20个单元格顺利,但在上面 - 它在滚动时开始滞后。请建议一个具有更好滚动结果的实现。这是我做的方式:
我已经定义了一个自定义UITableViewCell
类。
单元格有4个标签和imageView
(每个出口都是合成属性):
我在tableView
中放置了viewController
,并按照以下方式填充:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
MyCustomCell *cell = (MyCustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects)
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (MyCustomCell *) currentObject;
break;
}
}
[cell.label_descr setText:@"bla-bla-bla"];
[cell.label_date setText:@"bla-bla-bla"];
[cell.label_time setText:@"bla-bla-bla"];
[cell.label_numeric setText:@"bla-bla-bla"];
[cell.image_view setImage:[UIImage imageWithContentsOfFile:@"bla-bla-bla"]];
return cell;
}
正如您所见,每个单元格中的文本数量很难看,而UIImageView
使用的图像大约是25x25 .png文件。
我的tableView
应该容纳超过300个单元格(不要责怪我,我有一个“来自地狱的客户”)。
请建议一种方法,使tableView
滚动更顺畅,没有(很多)滞后。或者另一种方法是向我的“来自地狱”的顾客展示那些“该死的超过300个细胞”。
300提前感谢!
P.S。:抱歉,如果重复,但找到的解决方案根本没有帮助。
修改
关于用于imageView的图像:
我只使用2张不同的图片:
也许我用来在tableViewCell xib中定义2个imageView出口,只选择所需的imageView,而不是每次都设置所需的图像?
解决方案,感谢所有人,尤其是iNoob和max _。
在cellForRowAtIndexPath
中定义单元格的值时,仅在需要时,我说:
if_I_should_present_a_pending_image:
[cell setPending];
将“checkMark”替换为“pending”图像(tableViewCell类中定义的方法):
- (void)setPending{
self.image_view.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"pending_1.png"],
[UIImage imageNamed:@"pending_2.png"],
[UIImage imageNamed:@"pending_3.png"],
[UIImage imageNamed:@"pending_4.png"],
nil];
self.image_view.animationDuration = 2.0;
self.image_view.animationRepeatCount = 0;
[self.image_view startAnimating];
}
1
之后,桌子像魅力一样滚动。再次感谢大家。欢呼声。
答案 0 :(得分:1)
cell = [topLevelObjects objectAtIndex:0];
伪代码:
If caches dict contains an object for the URL you want to load
Retrieve that image from the dict
Set it as the image
Else
Load the image using dispatch_async()
Add it to the dict
答案 1 :(得分:0)
我发现这个article表明以编程方式而不是使用nib文件创建单元格可能会快5到10%。我不知道这是不是真的,所以请耐心等待,但值得一试。
答案 2 :(得分:0)
用以下代码替换您的代码然后尝试一下。
以下代码:
1)在您的控制器中获取UITableViewCell的IBOutlet。对于以下代码,它是myCustomTableViewCell
。
MyCustomCell *customCell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCustomCell"];
if(customCell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];
customCell = myCustomTableViewCell;
}
希望它能奏效。