こんにちは、スタックオーバーフローで複数の回答を試みましたが、スクロールテーブルビューで、スクロールアップまたはスクロールするとアクセサリチェックマークが消えます。UITableViewがスクロールアップまたはスクロール時にアクセサリチェックマークを表示しない
マイコード---
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
PackageTableCell *cell = (PackageTableCell *)[tableView dequeueReusableCellWithIdentifier:packageCell];
if (cell == nil)
{
cell = [[PackageTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:packageCell];
}
cell.backgroundColor = [UIColor whiteColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
JobAndPackDetails *objJobAndPackDetails =[self.arrayOfJobList objectAtIndex:indexPath.row];
if ([objJobAndPackDetails.jobType isEqualToString:@"JPK"])
{
[cell.imgJPK setImage:[UIImage imageNamed:@"vs_package.png"]];
}
else{
[cell.imgJPK setImage:nil];
}
NSIndexPath *indexPathP = [self.tableView indexPathForSelectedRow];
[self.tableView selectRowAtIndexPath:indexPathP animated:NO scrollPosition:UITableViewScrollPositionNone];
NSNumber *rowNsNum = [NSNumber numberWithInteger:indexPath.row];
if ([self.arrayOfJobList containsObject:rowNsNum] )
{
cell.accessoryType = UITableViewCellAccessoryCheckmark ;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
[cell.lblJobName setText:objJobAndPackDetails.jobName];
[cell.lblJobDescription setText:objJobAndPackDetails.jobDesc];
[cell.lblJobCreated setText:objJobAndPackDetails.jobType];
[cell.lblJobSK setText:[NSString stringWithFormat:@"%.0f",objJobAndPackDetails.jobSK]];
[cell.imgVehicle setImage:[UIImage imageNamed:@"placeholder.png"]];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path
{
PackageTableCell *cell = [tableView cellForRowAtIndexPath:path];
NSString *str_JobType = cell.lblJobCreated.text;
NSString *str_JobSK = cell.lblJobSK.text;
if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
{
cell.accessoryType = UITableViewCellAccessoryNone;
if ([str_JobType isEqualToString:@"JOB"])
{
[self.array_Job removeLastObject];
[self.array_JobSK removeLastObject];
NSLog(@"JOB :%@",self.array_Job);
NSLog(@"JOB_SK :%@",self.array_JobSK);
}
else
{
[self.array_Package removeLastObject];
[self.array_PackageSK removeLastObject];
NSLog(@"PACKAGE :%@",self.array_Package);
NSLog(@"Package_SK :%@",self.array_PackageSK);
}
}
else
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
NSLog(@"Selected Job Type Text :%@",str_JobType);
if ([str_JobType isEqualToString:@"JOB"])
{
[self.array_Job addObject:str_JobType];
[self.array_JobSK addObject:str_JobSK];
NSLog(@"JOB :%lu",(unsigned long)self.array_Job.count);
NSLog(@"JOB_SK :%@",self.array_JobSK);
NSMutableDictionary *tmpDict = [NSMutableDictionary dictionary];
for (int i = 1; i <= self.array_Job.count; i ++)
{
[tmpDict setObject:[NSString stringWithFormat:@"%d",0] forKey:@"AppointmentJobSK"];
[tmpDict setObject:[NSString stringWithFormat:@"%d",0] forKey:@"AppointmentSK"];
[tmpDict setObject:str_JobType forKey:@"JobType"];
[tmpDict setObject:str_JobSK forKey:@"JobTypeSK"];
[tmpDict setObject:[NSString stringWithFormat:@"%d",5] forKey:@"UserCreated"];
[tmpDict setObject:[NSString stringWithFormat:@"2016-04-14 10:00:00"] forKey:@"DateCreated"];
NSMutableArray *dictAllKeys=[NSMutableArray arrayWithArray:[tmpDict allKeys]];
NSMutableArray *dictAllValues=[NSMutableArray arrayWithArray:[tmpDict allValues]];
Job_keysAndValues=[NSMutableArray arrayWithArray:[dictAllKeys arrayByAddingObjectsFromArray:dictAllValues]];
NSLog(@"Key and Values :%@",Job_keysAndValues);
}
Job_dict = tmpDict;
NSLog(@"Dict :%@",Job_dict);
}
else
{
[self.array_Package addObject:str_JobType];
[self.array_PackageSK addObject:str_JobSK];
NSLog(@"PACKAGE :%@",self.array_Package);
NSLog(@"Package_SK :%@",self.array_PackageSK);
NSMutableDictionary *tmpDict = [NSMutableDictionary dictionary];
for (int i = 1; i <= self.array_Package.count; i ++)
{
[tmpDict setObject:[NSString stringWithFormat:@"%d",0] forKey:@"AppointmentJobSK"];
[tmpDict setObject:[NSString stringWithFormat:@"%d",0] forKey:@"AppointmentSK"];
[tmpDict setObject:str_JobType forKey:@"JobType"];
[tmpDict setObject:str_JobSK forKey:@"JobTypeSK"];
[tmpDict setObject:[NSString stringWithFormat:@"%d",5] forKey:@"UserCreated"];
[tmpDict setObject:[NSString stringWithFormat:@"2016-04-14 10:00:00"] forKey:@"DateCreated"];
NSMutableArray *dictAllKeys=[NSMutableArray arrayWithArray:[tmpDict allKeys]];
NSMutableArray *dictAllValues=[NSMutableArray arrayWithArray:[tmpDict allValues]];
Package_keysAndValues=[NSMutableArray arrayWithArray:[dictAllKeys arrayByAddingObjectsFromArray:dictAllValues]];
}
Package_dict = tmpDict;
NSLog(@"Dict :%@",Package_dict);
}
NSMutableDictionary *merged = Job_dict.mutableCopy;
[merged addEntriesFromDictionary: Package_dict];
NSLog(@"Package Dict:%@",merged);
}
}
いつものように、**は 'didSelectRowAtIndexPath'のビュー(セル)を誤用しません。アクセサリタイプの状態を反映するように、モデル(データソース配列)を設計します。その後、モデルを変更してビューをリロードします。 – vadian
配列を[self.arrayOfJobList containsObject:rowNsNum]としてチェックしないでください。オブジェクトが配列内に存在する場合は常にTRUEを返します。代わりに、if [self.arrayOfJobList objectAtIndex:indexPath.row] isEqualTo:@ "チェックされた "/ @"チェックされていない "])。 –
@vadian私はあなたと私の質問に基づいてヒントを与えることができます私はどのようにデータソースのモデルを再設計する必要があります – ChenSmile