SDWebImage с FIRStorage в цели c

Я получаю изображения из хранилища FIRebase. Но это меняет изображения, пока я прокручиваю вверх и вниз в табличном представлении. Я перепробовал все это через Интернет и переполнение стека, но не повезло. Ниже мой код.

#import "TableViewController.h"
#import "CustomCell.h"
#import "DetailViewController.h"
#import "dataObj.h"
#import "MZFormSheetPresentationViewControllerSegue.h"
#import "BrowseTableViewController.h"
#import "FavouritesTableViewController.h"
#import "ProfileObj.h"
#import "LoginViewController.h"
#import "InboxTableViewController.h"
#import "ProfileViewController.h"

#import <KeychainItemWrapper/KeychainItemWrapper.h>

@import SDWebImage;
@import FirebaseDatabaseUI;
@import Firebase;
@import FirebaseAuthUI;
@import FirebaseGoogleAuthUI;
@import FirebaseFacebookAuthUI;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellIdentifier;
    CustomCell *cell;
    if(indexPath.row == 0){
        cellIdentifier = @"Cell1";
        cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    }else{

    cellIdentifier = @"Cell";
    cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
FIRStorage *storage = [FIRStorage storage];
    FIRStorageReference *storageRef = [[storage reference] child:@"publicListings"];

    if([photo0 intValue] == 1){
        FIRStorageReference *idRef = [storageRef child:self.snaps.key];
        FIRStorageReference *folderRef = [idRef child:@"photos"];
        NSString *fileName = @"photo0.jpg";
        FIRStorageReference *imageRef = [folderRef child:fileName];
        [imageRef downloadURLWithCompletion:^(NSURL *URL, NSError *error){
            if(error != nil){
                NSLog(@"%@",error);
            }
            else{
                [cell.imgPhoto sd_setImageWithURL:URL
                             placeholderImage:[UIImage imageNamed:@"image3.png"]
                                      options:SDWebImageRefreshCached];

//                NSString *url = URL.absoluteString;
//                [cell.imgPhoto sd_setImageWithURL:[NSURL URLWithString:url]];
            }
        }];
    }
}
}

1 ответ

TableViewCell можно использовать многократно, и вы можете получить использованную ячейку без очереди, попробуйте очистить состояние ячейки после получения ячейки.

В вашем случае попробуйте установить

cell.imgPhoto = nil; 

или же

cell.imgPhoto = [UIImage imageNamed:@"image3.png"];

перед использованием этой клетки.

Другие вопросы по тегам