我创建了一个名为tableCell的自定义UITableViewCell类(原来是的!),我在其中实现了awakeFromNib
,prepareForReuse
和我自己的方法:
这是askForThumbnail
:
- (void)askForThumbnail {
if (!self.thumbnailAsked)
{
// ask for thumbnail here
NSString *name = [NSString stringWithFormat:@"th:%@", self.remotePath];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(listenToThumbnail:) name:name object:nil];
self.thumbnailTask = [self.appDelegate.taskManager launchThumbnailWithRemotePath:self.remotePath];
self.thumbnailAsked = YES;
}
}
listenToThumbnail
:
- (void)listenToThumbnail: (NSNotification *)myNotif {
self.thumbnail = [[myNotif object] thumbnail];
self.thumbnailView.image = self.thumbnail;
#pragma mark TODO
}
和initCellWithRemotePath
:
- (void)initCellWithRemotePath: (NSString *)remotePath {
if (!self.remotePath)
{
self.remotePath = remotePath;
self.titleLabel = ((UILabel *)[self viewWithTag:10]);
self.thumbnailView = ((UIImageView *)[self viewWithTag:30]);
self.infoLabel = ((UILabel *)[self viewWithTag:40]);
}
}
我的ViewController cellForRowAtIndexPath
:
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// real awoke
tableCell *cell = (tableCell *)[tableView dequeueReusableCellWithIdentifier:@"CellFile" forIndexPath:indexPath];
// init this cell
[cell initCellWithRemotePath:[NSString stringWithFormat:@"iphone/test/IMG_%04ld.JPG", indexPath.row + 1]];
// ask the thumbnail to the server
[cell askForThumbnail];
if (cell.thumbnail)
cell.thumbnailView.image = cell.thumbnail;
cell.titleLabel.text = [NSString stringWithFormat:@"IMG_%04ld.JPG", indexPath.row + 1];
return cell;
}
解释
当我向下滚动此tableView时,我的单元格的imageView没有好的图像(cell.imageView.image
)......
当我想向上滚动时,我的顶部单元格(1,2,......)有底部单元格图像......
我认为我的NSNotifications
和我的observers
存在问题,因为如果我在if (!self.thumbnailAsked)
中删除了askForThumbnail
,那么如果一个小区要求缩略图并滚动,这是收到通知的另一个单元格。
它也可以来自iOS通知系统,它与self
在addObserver
函数中提出的其他内容有关...或类似的内容......