#ios #objective-c #xcode
Вопрос:
Когда я попытался добавить контроллер вида в свой навигационный контроллер, он работал отлично… Но когда я подключил первый контроллер представления ко второму через пользовательский сегмент, он не связал второй контроллер представления с контроллером навигации
Как вы можете видеть, третий контроллер просмотра не подключен к контроллеру навигации и не имеет панели навигации.
Вот все, что есть в СегекЛассе
@implementation SegueFromRight
(недействительно) выполнить {
UIViewController *src = self.sourceViewController;
UIViewController *dst = self.destinationViewController;
CATransition *transition = [[CATransition alloc] init];
CAMediaTimingFunction *timeFunc = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
transition.duration = 0.25;
transition.timingFunction = timeFunc;
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[src.navigationController.view.layer addAnimation:transition forKey: kCATransition];
[src.navigationController pushViewController: dst animated: false];
}
@конец
Есть ли что-нибудь, чего мне не хватает, что мне нужно добавить?
Ответ №1:
Это потому, что вы создали пользовательский сегмент. Конструктор интерфейсов не может знать, что это будет эквивалентно переходу push (show), поэтому по умолчанию панель навигации не отображается. Но это всего лишь косметический вопрос; то, как сцена отображается в построителе интерфейсов, не имеет значения для того, что на самом деле произойдет во время выполнения.
Если вы хотите увидеть панель навигации в построителе интерфейсов, просто запросите ее; в инспекторе атрибутов для этого контроллера представления измените Верхнюю панель -> Вывод на видимый тип панели навигации.
Если вам нужны элементы навигации, просто начните с добавления элемента навигации непосредственно в эту сцену.
Комментарии:
1. Это также тот случай, когда ваш пользовательский сегмент неверен; это не то, как сделать пользовательскую анимацию перехода. Но это совсем другое дело, отдельно от вопроса, который вы задали.