-1
您好,我嘗試了堆棧溢出的多個答案,但是當我滾動表格視圖時,附件複選標記消失時,我向上或向下滾動。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,而應該如果([[self.arrayOfJobList objectAtIndex:indexPath.row] isEqualTo:@「選中「/ @」未選中「])。 –
@vadian我同意你可以根據我的問題給出提示,我應該如何重新設計數據源的模型 – ChenSmile