У меня есть UISplitViewController, в котором я пытаюсь передать значение int из MasterViewController в DetailTableViewController. И мастер, и контроллер подробного представления являются UITableViewControllers. Я пытаюсь передать значение indexPath.row от мастера к детали, которая будет определять, какой массив объектов загружается в табличное представление detailViewController.
Некоторый код из MasterViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int indexRowTouched = indexPath.row;
detailViewController = [self.splitViewController.viewControllers lastObject];
NSLog(@"%@", detailViewController);
detailViewController.detailItem = indexRowTouched;
NSLog(@"index row %i", indexRowTouched);
}
Здесь выдается исключение
detailViewController.detailItem = indexRowTouched;
2012-03-28 16: 08: 19.625 splittest2 [14895: f803] - [UINavigationController setDetailItem:]: нераспознанный селектор, отправленный экземпляру 0x6b592e0
Из DetailViewController.m
- (void)setDetailItem:(int)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
Я также отмечаю, что значение detailItem записывает «0», как только загружается detailView, прежде чем строка indexPath будет вообще выбрана.
Мне интересно, почему это свойство не присваивается из MasterViewController, а TableView не обновляется.
EDIT
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int indexRowTouched = indexPath.row;
detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
detailViewController.detailItem = indexRowTouched;
NSLog(@"index row %i", indexRowTouched);
}
Попытка получить доступ к setDetailItem в UINavigationController, кажется, была исправлена путем изменения didSelectRowAtIndexPath к приведенному выше