Segue между двумя контроллерами представления - программирование
Подтвердить что ты не робот

Segue между двумя контроллерами представления

enter image description here

На моем раскадровке (показано выше) у меня есть ViewController, который содержит MKMapView с аннотациями. Эти аннотации содержат значок раскрытия, который при нажатии на него должен перемещаться пользователем на другой ViewController. Для этого я создал push-сегмент между контроллерами представлений. Затем я дал ему идентификатор "showDetail" и реализовал следующий код.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    [self performSegueWithIdentifier:@"showDetail" sender:self];
}

Однако я получаю следующую ошибку.

Could not find a navigation controller for segue 'showDetail'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

Где я ошибаюсь? Я попытался изменить свой исходный UIViewController на UINavigationController, но представление затем просто отображается как черный экран.

4b9b3361

Ответ 1

Фактически вам нужно установить UIViewController в качестве корневого контроллера UINavigationController (или проталкиваться из контроллера представления с помощью навигатора). Для этого

  • Перетащите новый навигационный контроллер в свою раскадровку - это будет по умолчанию подключаться к контроллеру таблицы.
  • Удалить контроллер таблицы. Щелкните правой кнопкой мыши навигацию контроллера и подключить свойство "Root View Controller" к вашему существующий контроллер представления
  • Переместите стрелку точки входа из контроллера просмотра в корневой каталог просмотр контроллера

Ответ 2

Простейший способ сделать это - выбрать контроллер просмотра, которым вы хотите быть корнем вашей иерархии навигации, и выбрать

Editor > Embed In > Navigation Controller

Это создает новый контроллер навигации и подбирает все для вас.

Ответ 3

выполните следующие действия:  1. щелкнуть соединение между двумя контроллерами.  2. Щелкните указатель атрибута атрибута  3. установите идентификатор в "showDetail".  4. Сохраните и запустите.