如何在iOS中正确重新加载单个表格视图?

时间:2014-11-12 10:15:06

标签: ios objective-c uitableview

以下是我正在处理的方案:

1]我有一个tableView,最多可以有6行。现在,在加载视图时,tableView会填充静态值,如行号。这样我最初会在单元格中显示indexPath.row。

2]现在点击一个单元格,我转到另一个viewController,在那里填写一个表格然后返回。我在这里制作了一系列字典,数组是全局的,即appDelegate

3]所以,我想要做的是,当我返回tableView时,我想更新我最初点击的行并转到表单。因此,如果单击第一行,则填写后表单和返回我想只更新第一行。其余行已经有行号等静态数据,所以我不想改变它。

PassengerDetailsViewController包含tableView

PassengerInfoViewController包含一堆包含UITextFields

的表单

blockSeatPaxDetails是全局数组。

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
   {
         //seatCountVal = 1 to 6;
   if (blockSeatPaxDetails.count>0 && blockSeatPaxDetails.count<seatCountVal){

       NSInteger remainder=seatCountVal-blockSeatPaxDetails.count;
       return blockSeatPaxDetails.count+remainder;

   }else if (blockSeatPaxDetails.count==seatCountVal){
    return blockSeatPaxDetails.count;

   }else{
      return seatCountVal;
  }
 }


  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
   {
     static NSString *CellIdentifier = @"Cell";
     cell = [passengerInfoTableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil)
   {
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier ];

   }

    NSLog(@"Global array of passenger  : %@",blockSeatPaxDetails);
    if (blockSeatPaxDetails.count>0) {

    NSString *temp= [[blockSeatPaxDetails objectAtIndex:indexPath.row]valueForKey:@"firstName"]; // Doesn't show up
    cell.textLabel.text = temp;
    cell.imageView.image = [UIImage imageNamed:@"user.png"];


   }else{

       seatNo = [[sharedmanagerObj.selected_SeatArray objectAtIndex:indexPath.row]valueForKey:@"id"];

      cell.textLabel.text = [NSString stringWithFormat:@"Passenger %ld - seat %@", (long)i  ndexPath.row+1,seatNo];
      cell.imageView.image = [UIImage imageNamed:@"user.png"];

  }
  return cell;

}

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
    rowNumber = indexPath.row; //store the selected row.
    PassengerInfoViewController *pivc = [self.storyboard instantiateViewControllerWithIdentifier:@"PassengerInfoViewController"];

    [self.navigationController pushViewController:pivc animated:YES];

 }

现在在PassengerInfoViewController我填写一个表格,然后返回一个字典并返回。在此之前一切都很好。但是当试图重新加载tableView时,行不会显示数据如果表视图滚动,应用程序崩溃。如何正确执行此操作?

以下是我重新加载tableViewRow

的方法
-(void)viewWillAppear:(BOOL)animated {

[passengerInfoTableView beginUpdates];
NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:rowNumber inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[passengerInfoTableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
[passengerInfoTableView endUpdates];
}

0 个答案:

没有答案