У меня есть 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
? Есть ли лучший метод для передачи правильного пути индекса следующему контроллеру представления?
passedName
, который вы видите выше, объект имеет значение null, когда NSLogged в его контроллере представления. Есть решения? - person The Kraken   schedule 22.02.2012