ラベルとイメージを持つテーブルビューセルがあり、イメージをスクロールしてラベルが変更されています。これはセルデキュー機能によるものです。 imageviewをnilにすると動作しません。 繰り返しの問題は、画像の配列から画像を取り込むPinImageViewであり、画像をURLから取り込むものではありません。再利用可能性のためにテーブルビューのセルが繰り返し表示される
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *[email protected]"cellIdentifier";
TripInfoListCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil) {
cell=(TripInfoListCell *)[[[NSBundle mainBundle] loadNibNamed:@"TripInfoListCell" owner:self options:nil] firstObject];
}
cell.PinImageView.image = nil;
NSString *direction=[dict123 valueForKey:@"direction" ] ;
NSString *drive_status=[dict123 valueForKey:@"driver_or_rider"];
if((indexPath.row==totalRow-1)&&[direction isEqual:@"From"])
{
__weak TripInfoListCell *weakCell = cell;
cell.PinImageView.image=[UIImage imageNamed:@"[email protected]"];
cell.userNameLabel.text=loggedUser.profile_name;
[email protected]"Driver";
if([drive_status isEqual:@"Ride"])
{
[email protected]"Driver";
[email protected]"Driver"; //In case of "Rider" "From" name in the last row
}
else{
[email protected]"You";
}
NSString *imagePic = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_image"];
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:imagePic]];
[cell.userImageView setImageWithURLRequest:request placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
weakCell.userImageView.image=image;
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"%@",error);
}];
}
else if((indexPath.row==totalRow-1)&&[direction isEqual:@"To"])
{
cell.PinImageView.image=[UIImage imageNamed:@"[email protected]"];
cell.userNameLabel.text=[_tripDetails objectForKey:@"park_name"];
NSString *image=[NSString stringWithFormat:@"%@",[dict123 objectForKey:@"parkBannerImageUrl"]];
[[ImageHandler sharedInstance] getImageFromURL:image withCompletion:^(UIImage *image) {
if (image) {
[cell.userImageView setImage:image];
}
}];
}
else
if ([tableGoersList count] > indexPath.row)
{
NSDictionary *goersInfo=[tableGoersList objectAtIndex:indexPath.row];
[[NSUserDefaults standardUserDefaults]setObject:[goersInfo valueForKey:@"user_image_url"] forKey:@"user_image"];
[[NSUserDefaults standardUserDefaults]synchronize];
__weak TripInfoListCell *weakCell = cell;
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:goersInfo[@"user_image_url"]]];
[cell.userImageView setImageWithURLRequest:request placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
weakCell.userImageView.image=image;
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"%@",error);
}];
if((indexPath.row==0)&&[direction isEqual:@"To"]) {
if([drive_status isEqual:@"Drive"]){
[email protected]"Driver";
cell.PinImageView.image=[UIImage imageNamed:@"[email protected]"];
cell.userNameLabel.text=loggedUser.profile_name;
[email protected]"You";
}
else{
}
}
else if((indexPath.row==0)&&[direction isEqual:@"From"]) {
if([drive_status isEqual:@"Drive"])
{
cell.PinImageView.image=[UIImage imageNamed:@"[email protected]"];
cell.userNameLabel.text=[_tripDetails objectForKey:@"park_name"];
[email protected]"";
[email protected]"";
NSString *image=[NSString stringWithFormat:@"%@",[dict123 objectForKey:@"parkBannerImageUrl"]];
[[ImageHandler sharedInstance] getImageFromURL:image withCompletion:^(UIImage *image) {
if (image) {
[cell.userImageView setImage:image];
}
}];
}
else{
NSLog(@"rider from");
[email protected]"";
}
}
else{
imageNameArray = [[NSArray alloc] initWithObjects:@"[email protected]", @"[email protected]", @"[email protected]", @"[email protected]", @"[email protected]",@"[email protected]",@"[email protected]", nil];
NSString* nameStr=[goersInfo valueForKey:@"name"];
NSArray * nameStrArray = [nameStr componentsSeparatedByString: @"'s"];
nameStr=[nameStrArray objectAtIndex:0];
cell.riderDriverSlNo.text=[NSString stringWithFormat:@"Rider %ld",(long)indexPath.row];
index = [TripInfoVC ifNameExists:_arrName Name:nameStr];
if(index == 0)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:0]];
[_arrName addObject:nameStr];
}
if(index == 1)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:1]];
}
if(index == 2)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:2]];
}
if(index == 3)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:3]];
}
if(index == 4)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:4]];
}
if(index == 5)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:5]];
}
if(index == 6)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:6]];
}
if(index == 7)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:0]];
}
if(index == 8)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:1]];
}
if(index == 9)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:2]];
}
if(index == 10)
{
cell.PinImageView.image=[UIImage imageNamed:[imageNameArray objectAtIndex:3]];
}
} // this pinImageView is the pin image which is repeated on scrolling
return cell;
}
この問題を解決するのを手伝ってください。
の場合、問題は "cell.PinImageView.image = [UIImage imageNamed:@" [email protected] "];"このPinImageViewは配列から画像を取得しています –