У меня есть 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
?Есть ли лучший способ для передачи правильного пути индекса к следующему контроллеру представления?