Ios 向上或向下滚动时,UITableView会隐藏附件复选标记

Ios 向上或向下滚动时,UITableView会隐藏附件复选标记,ios,objective-c,uitableview,Ios,Objective C,Uitableview,嗨,我在堆栈溢出中尝试了多个答案,但当我滚动表格视图时,当我向上或向下滚动时,附件复选标记消失 我的代码--- -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { PackageTableCell*cell=(PackageTableCell*)[tableView出列可重用CellWithIdentifier:packageCell]; 如果(

嗨,我在堆栈溢出中尝试了多个答案,但当我滚动表格视图时,当我向上或向下滚动时,附件复选标记消失

我的代码---

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
PackageTableCell*cell=(PackageTableCell*)[tableView出列可重用CellWithIdentifier:packageCell];
如果(单元格==nil)
{
cell=[[PackageTableCell alloc]initWithStyle:UITableViewCellStyleDefault重用标识符:packageCell];
}
cell.backgroundColor=[UIColor whiteColor];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
JobAndPackDetails*objJobAndPackDetails=[self.arrayOfJobList objectAtIndex:indexath.row];
if([objJobAndPackDetails.jobType IsequalString:@“JPK”])
{
[cell.imgJPK setImage:[UIImage ImageName:@“vs_package.png”];
}
否则{
[cell.imgJPK setImage:nil];
}
nsindepath*indexPathP=[self.tableView indexPathForSelectedRow];
[self.tableView selectRowatinexpath:indexpath动画:无滚动位置:uitableview滚动位置无];
NSNumber*rowNsNum=[NSNumber numberWithInteger:indexPath.row];
if([self.arrayOfJobList containsObject:rowNsNum])
{
cell.accessoryType=UITableViewCellAccessoryCheckmark;
}
其他的
{
cell.accessoryType=UITableViewCellAccessoryNone;
}
[cell.lblJobName setText:objjob和packdetails.jobName];
[cell.lbljobsdescription setText:objjob和packdetails.jobDesc];
[cell.lblJobCreated setText:objjob和packdetails.jobType];
[cell.lblJobSK setText:[NSString stringWithFormat:@“%.0f”,objjobs和packdetails.jobSK]];
[cell.imgVehicle setImage:[UIImage ImageName:@“placeholder.png”];
返回单元;
}
-(void)tableView:(UITableView*)tableView未选择RowatineXpath:(NSIndexPath*)路径
{
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 IsequalString:@“JOB”])
{
[self.array_作业移除对象];
[self.array_JobSK removeLastObject];
NSLog(@“作业:%@”,self.array_作业);
NSLog(@“作业任务:%@”,self.array\u作业任务);
}
其他的
{
[self.array_Package removeLastObject];
[self.array_PackageSK removeLastObject];
NSLog(@“包:%@”,self.array_包);
NSLog(@“Package_SK:%@”,self.array_PackageSK);
}
}
其他的
{
cell.accessoryType=UITableViewCellAccessoryCheckmark;
NSLog(@“所选作业类型文本:%@”,str_作业类型);
if([str_JobType IsequalString:@“JOB”])
{
[self.array_Job addObject:str_JobType];
[self.array_JobSK addObject:str_JobSK];
NSLog(@“作业:%lu”,(无符号长)self.array\u JOB.count);
NSLog(@“作业任务:%@”,self.array\u作业任务);
NSMutableDictionary*tmpDict=[NSMutableDictionary];

对于(int i=1;i而言,在tableView:cellForRowAtIndexPath中,您似乎正在arrayOfJobList中检查有关单元格是否应具有复选标记的信息。但是,在tableView:didSelectRowAtIndexPath中,您没有在arrayOfJobList中存储任何有关所选单元格的信息

还有一个附带说明,在取消选择时,您正在从array_作业、array_作业SK、array_软件包和array_软件包SK中删除最后一个项目,但您没有检查取消选择的项目是否实际上是放入该数组的最后一个项目?
例如,如果您选择单元格项目A、B和C,取消选择A,您将从这些阵列中删除C?

一如既往,不要误用
didSelectRowAtIndexPath
中的视图(单元格)。设计您的模型(数据源阵列)以镜像附件类型的状态。然后更改模型并重新加载视图。您不应按要求检查阵列[self.arrayOfJobList containsObject:rowNsNum]因为如果数组中存在对象,则每次都会返回TRUE,而在([[self.arrayOfJobList objectAtIndex:indexPath.row]isEqualTo:@“已检查”/@“未检查”])情况下,则应执行此操作@vadian我同意你的看法,你可以根据我的问题给出提示,我应该如何重新设计数据源的模型大量不相关的代码,使用单元格状态作为内部逻辑。@Andy,你可以建议我在哪里进行更改吗
- (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);
}

}