以下是我正在处理的方案:
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];
}