我有一个UITableView
来自 plist 文件的显示数据。对于这个表格视图,我只是NSArray
从 plist 文件的内容中创建了一个并将数据输入到每个单元格中。但是当一个单元格被点击时,我需要下一个表视图控制器知道被点击的单元格的索引路径,以便这个视图控制器知道数组中的哪个项目要显示详细信息。我尝试了以下方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
staffDetailView = [[StaffDetailViewController alloc] init];
[staffDetailView setSelectedIndexPath:indexPath];
[self performSegueWithIdentifier:@"pushStaffDetailView" sender:self];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
上面,我试图将点击单元格的索引路径传递给NSIndexPath
我在新视图控制器中创建的对象。
下一个表视图控制器的头文件:
@interface StaffDetailViewController : UITableViewController {
NSIndexPath *selectedIndexPath;
NSArray *staffArray;
}
@property (nonatomic, retain) NSIndexPath *selectedIndexPath;
@property (nonatomic, strong) NSArray *staffArray;
这里我定义了selectedIndexPath
在前一个视图控制器中设置的对象。
但是当我尝试访问该selectedIndexPath
对象以显示相关数据时,该对象似乎是nil
:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *header;
if (section == 0) {
NSString *name = [[staffArray objectAtIndex:selectedIndexPath.row] objectForKey:@"Staff Member"];
NSArray *splitStaffArray = [name componentsSeparatedByString:@", "];
NSString *lastName = [splitStaffArray objectAtIndex:0];
NSString *firstName = [splitStaffArray objectAtIndex:1];
NSString *consolidatedName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
NSString *assignment = [[staffArray objectAtIndex:selectedIndexPath.row] objectForKey:@"Assignment"];
header = [NSString stringWithFormat:@"%@\n%@", consolidatedName, assignment];
return header;
}
return nil;
}
我是否selectedIndexPath
错误地访问了对象?是否有更好的方法将正确的索引路径传递给下一个视图控制器?