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"];
перед использованием этой клетки.