将一个整数值设置为indexpath.row

我正在尝试进行测验计划。 当用户单击正确答案时,程序正常工作,但如果用户单击错误的答案,程序必须显示正确的答案,程序知道哪个单元是正确的,但不能调用该方法。

这是我的项目的一部分;

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ CGRect rect = cell.frame; UIView * view = [[UIView alloc] init]; UIImageView *back = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ListGray"] ]; databaseNameUser = SQL; NSArray *documentPathsUser = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirUser = [documentPathsUser objectAtIndex:0]; databasePathUser = [documentsDirUser stringByAppendingPathComponent:databaseNameUser]; sqlLocal= [[Sqlite alloc]initWithFile:databasePathUser]; NSString *query1 = [NSString stringWithFormat: @"SELECT AnswerID from tblAnswer where QuestionID = %i",[[questionsID objectAtIndex:i] intValue]]; answerInfo=[sqlLocal executeQuery:query1]; NSMutableArray *answerIDArray = [[NSMutableArray alloc]init]; for (NSMutableDictionary *d in answerInfo) { [answerIDArray addObject:[d valueForKey:@"AnswerID"]]; } NSString *query2 = [NSString stringWithFormat: @"SELECT answerID from tblDogruCevaplar where QuestionID = %i",[[questionsID objectAtIndex:i] intValue]]; NSArray *answerInfo2=[sqlLocal executeQuery:query2]; //NSMutableArray *answerDogru = [[NSMutableArray alloc]init]; for (NSMutableDictionary *d in answerInfo2) { answerDogruDefault=[d valueForKey:@"answerID"]; } for (int indexOfArray = 0; indexOfArray<4; indexOfArray++ ){ if ([answerDogruDefault intValue] == [[answerIDArray objectAtIndex:indexOfArray] intValue]){ //NSLog(@"indexpath = %i",indexOfArray); indexPathInt = indexOfArray; } } BOOL selx; if (answerType==2) selx = [self isSelected:indexPath]; else selx = [lastIndexPath isEqual:indexPath]; if (selx) { back = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SecildiYesilTikli2.png"] ]; cell.textLabel.textColor = [UIColor whiteColor]; [view addSubview:back]; cell.backgroundView = view; if ([self isAnswerCorrect]) { if (indexPathInt == indexPath.row) { [NSTimer scheduledTimerWithTimeInterval:3.f target:self selector:@selector(dogruCevapSignal:) userInfo:cell repeats:NO]; } }else{ cell.textLabel.textColor = [UIColor redColor]; NSIndexPath *a = [NSIndexPath indexPathForRow:indexPathInt inSection:0]; NSLog(@"a = %i",a.row); cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPathInt inSection:0]]; [NSTimer scheduledTimerWithTimeInterval:3.f target:self selector:@selector(dogruCevapSignal:) userInfo:cell repeats:NO]; } back.frame = CGRectMake(0, 12,rect.size.width,rect.size.height-12); } else { cell.accessoryView = nil; if (lastIndexPath != nil){ cell.textLabel.textColor = [UIColor blackColor]; [view addSubview:back]; cell.backgroundView = view; back.frame = CGRectMake(0, 12,rect.size.width,rect.size.height-12); back = nil; } } [view addSubview:back]; cell.backgroundView = view; back.frame = CGRectMake(0, 12,rect.size.width,rect.size.height-12); } -(void)dogruCevapSignal:(NSTimer *)cell{ UITableViewCell *defaultCell=(UITableViewCell *)[cell userInfo]; [UIView animateWithDuration:0.1f delay:0 options:(UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat) animations:^{ [UIView setAnimationRepeatCount:3]; defaultCell.alpha = 0; } completion: ^(BOOL finished) { defaultCell.hidden = YES; [UIView animateWithDuration:0.1 animations:^{ defaultCell.alpha = 1; } completion: ^(BOOL finished) { defaultCell.hidden = NO; defaultCell.textLabel.textColor = [UIColor blueColor]; }]; }]; } 

我不能在错误的答案中调用这个方法。

 [NSTimer scheduledTimerWithTimeInterval:3.f target:self selector:@selector(dogruCevapSignal:) userInfo:cell repeats:NO]; 

感谢您的关注。

NSIndexPath.row是只读的,所以你需要从现有的NSIndexPath对象,如下所示:

 NSIndexPath *original = ... int newRow = ...; NSIndexPath *changedRow = [NSIndexPath indexPathForRow:newRow // Use the new row inSection:original.section]; // Use the original section