Я портирую довольно простое приложение для iPhone с навигацией в приложение Split View для iPad.
У меня есть два вложенных уровня навигации в главном представлении. Пользователь выбирает значение из первой таблицы и загружает 2-ую таблицу. Выбор значения во второй таблице загружает элемент Detail для подробного представления. Или это должно быть. DidSelectRowAtIndexPath на моем втором контроллере срабатывает, но indexPath имеет значение null.
Я довольно близко следую шаблону SplitView. Я действительно только схожу с проторенной дорожки, добавив второй 2nd TableViewController. Мой RootViewController загружает 2-й TableViewController на didSelectRowAtIndexPath, и эта часть работает. В моем втором TableViewController.m я пытаюсь установить элемент детализации для DetailView. Но именно метод didSelectRowAtIndexPath не дает мне строки. Я довольно новичок в этом, но мне кажется странным, что метод щелчка по строке срабатывает, но не имеет индекса для этой строки.
Вот код:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
TrackerSplitViewAppDelegate *appDelegate = (TrackerSplitViewAppDelegate *)[[UIApplication sharedApplication] delegate];
detailViewController.thisRequest = [appDelegate.requests objectAtIndex:indexPath.row];
NSLog(@"Request Loaded: %@", detailViewController.thisRequest.Title);
NSLog(@"Index Row: %@", indexPath.row);
[appDelegate release];
}
Массив запросов загружается правильно (appDelegate.requests), но мой objectAtIndex не выполняется, поскольку indexPath имеет значение null. Или, по крайней мере, indexPath.row имеет значение null.
РЕДАКТИРОВАТЬ: Хорошо, комментарии ниже верны, я не использую NSLog должным образом. С indexPath.row все в порядке (я думал, что он также показывался как нулевой с использованием наведения мыши в отладчике, но я просто не знаю, как правильно использовать отладчик).
По какой-то причине свойство detailViewController неправильно настроено. Если я подставлю это:
//detailViewController.thisRequest = [appDelegate.requests objectAtIndex:indexPath.row];
Request *aRequest = [appDelegate.requests objectAtIndex:indexPath.row];
Объект aRequest загружается просто отлично. Поэтому следующий вопрос заключается в том, почему установка моего свойства для моего объекта detailViewController не работает. Я до сих пор не совсем понимаю, как обстоят дела в этой среде. Любой дополнительный вклад будет здорово.