在UITableViewCell中添加NSNotification观察器在滚动后由另一个Cell检索

时间:2014-10-02 21:27:04

标签: ios objective-c uitableview

我创建了一个名为tableCell的自定义UITableViewCell类(原来是的!),我在其中实现了awakeFromNibprepareForReuse和我自己的方法:

这是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通知系统,它与selfaddObserver函数中提出的其他内容有关...或类似的内容......

0 个答案:

没有答案