微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义UITableView不刷新单元格

如何解决自定义UITableView不刷新单元格

| 我正在创建自定义
UITableViewCells
。我正在使用NIB文件作为单元。它显示来自REST API的一些数据。我遇到的问题是当我向下滚动然后向上备份时,单元格没有刷新。它显示了我向下滚动时的数据。这是我的代码-
MyViewController.h
@interface FloviewController : UIViewController <UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource>
{
    UISearchBar *sBar;
    UITableView *searchResTable;
    NSArray *searchRes;
    UITableViewCell *resultsOne;
}

@property (nonatomic,retain) IBOutlet UILabel *photos;
@property(nonatomic,retain) IBOutlet UITableView *searchResTable;
@property (nonatomic,retain) NSArray *searchRes;

/* Search Results Templates */
@property (nonatomic,assign) IBOutlet UITableViewCell *resultsOne;
MyViewController.m
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(self.searchRes == nil)
        return nil;

    static Nsstring *cId  = @\"Cell\";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cId];
    if(cell == nil)
    {
        NSLog(@\"CREATING NEW CELL\");
        [[NSBundle mainBundle] loadNibNamed:@\"ResultsOne\" owner:self options:nil];
        cell            = self.resultsOne;
        self.resultsOne = nil;
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    //from here on displaying images etc from REST API.
    UIImageView *uPhoto = (UIImageView *)[cell viewWithTag:2];
Nsstring *photoURL  = [[self.searchRes objectAtIndex:[indexPath row]] objectForKey:@\"originator_photo_url\"];
if(photoURL)
{
    [UIView beginAnimations:@\"fadeIn\" context:NULL];
    [UIView setAnimationDuration:0.5];

    Nsstring *urlString = [Nsstring stringWithString:photoURL];
    [uPhoto setimageWithURL:[NSURL URLWithString:urlString] 
           placeholderImage:[UIImage imageNamed:[Nsstring stringWithFormat:@\"ph%d.png\",[indexPath row]]]];

    [UIView commitAnimations];
}

    //similarly display other sections in the cell...
为什么单元格中的内容没有刷新?即使当我输入全新数据(通过REST API搜索)时,某些单元格仍在表单元格中显示旧视图。 更新:如果我注释掉“ 5”,那么问题就解决了。即,我在滚动时看不到单元格内容的重复。 因为我要在ѭ7中创建自定义
ImageViews
,所以我需要做一些特殊的事情来清除单元格内容,然后才能添加内容?     

解决方法

        对我来说,如果photoURL为nil,您似乎忘记了重置uPhoto-UIImageView。这带来了缓存的数据。
if (photoURL) {
   ...
}
else {
  uPhoto.image = nil;
}
    ,        您正在使用
static NSString *cId  = @\"Cell\";
让我们为每个单元格尝试不同的标识符。我遇到了这个问题,并通过使用不同的单元格标识符(例如
static NSString *cId  =[NSString StringWithFormat : @\"Cell_%d_%d\",[indexPath section],[indexPath row] ];
我认为这可能会解决您的问题。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。