Я новичок в использовании разделенного представления для создания приложений для iPad. Когда я впервые создаю проект, просто используя стандартный шаблон приложения MasterDetail (Xcode 4.2), он создает MasterViewController и DetailViewController. Шаблон имеет следующий метод, который вызывается, когда строка выбирается из таблицы popover (контроллер представления подробных сведений):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
if (!self.detailViewController)
{
self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
}
[self.navigationController pushViewController:self.detailViewController animated:YES];
Теперь я понимаю, что когда вы используете обычный контроллер навигации, если вы программируете iPhone, вы просто делаете это, чтобы нажать на другой контроллер представления на стек. Однако с помощью этого шаблона он просто подталкивает подробный вид к popover, а не обновляет то, что уже присутствует. Я смущен как то, что мне нужно обновить, чтобы выбрать что-то из всплывающего окна (представление главной детали), а затем обновить detailView.
Update:
Чтобы попытаться проверить "detailItem", который уже настроен для вас в DetailViewController, я прокомментировал pushViewController и добавил следующее:
//[self.navigationController pushViewController:self.detailViewController animated:YES];
self.detailViewController.detailItem = @"Test";
// setter in detailViewController
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
- (void)configureView
{
// Update the user interface for the detail item.
// detailDescriptionLabel.text is a IBOutlet to the label on the detailView
if (self.detailItem) {
self.detailDescriptionLabel.text = [self.detailItem description];
}
}
В соответствии с этим кодом текст метки на detailViewController должен быть обновлен. Однако, когда я нажимаю на элемент в таблице контроллера главного представления, ничего не происходит.