В моем основном представлении у меня есть 4 статических строки таблицы. 2 из этих рядов развернутся в подробный вид в основном представлении, а второй 2 заменит содержимое подробного представления. Я контролировать то, что происходит с помощью метода didSelectRowAtIndexPath() путем вызова функции в зависимости от обстоятельств showViewController() и showDetailViewController():UISplitViewController сбой при использовании showDetailViewController
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0) {
Master2TVC *m2tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"master-2"];
[self showViewController:m2tvc sender:self];
} else if (indexPath.row == 1) {
Master3TVC *m3tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"master-3"];
[self showViewController:m3tvc sender:self];
} else if (indexPath.row == 2) {
Detail2VC *d2vc = [self.storyboard instantiateViewControllerWithIdentifier:@"detail-2"];
[self showDetailViewController:d2vc sender:self];
} else if (indexPath.row == 3) {
Detail3VC *d3vc = [self.storyboard instantiateViewControllerWithIdentifier:@"detail-3"];
[self showDetailViewController:d3vc sender:self];
}
}
Шаблон для шаблона Master-Detail создает ссылку из главного зрения на детальном:
self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
Если я правильно понимаю, эта ссылка существует, так что главная сторона может отправлять сообщения на сторону детали. В моем случае класс моего подробного представления изменится (Detail3VC, Detail2VC и т. Д.), Поэтому я решил удалить эту строку и сделать обмен сообщениями по-другому; однако теперь, когда я загружаю любой из своих новых подробных представлений и изменяю вращение iPad, приложение иногда вылетает с ошибкой EXC_BAD_ACCESS.
Из того, что я понимаю, EXC_BAD_ACCESS обычно означает, что вокруг где-то находится объект, который не должен быть. Я не смог найти что-либо в документации Apple, которая говорит о необходимости изменить что-либо еще при использовании вызова showDetailViewController(). Фактически, я думал, что причина использования showDetailViewController() заключается в том, что splitViewController управляет всеми деталями, и вам не нужно в своих классах.
У пользователя есть какие-то ошибки?
Таким образом, чтобы избавиться от сбоев, но теперь, когда я меняю ориентацию на портрет, у моего детального представления нет маленького шеврона для получения главного обзора. –
У меня есть следующий вопрос, который, возможно, вы также можете ответить. Я смог успешно получить все, чтобы работать с помощью segues вместо функций showDetailViewController() и showViewController(). Являются ли оба подхода действительными с более поздним, только что являющимся новой техникой? –
вам нужно будет добавить barButtonItem самостоятельно, например 'self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;' при использовании 'showDetailViewController'. – bluedome