В настоящее время я пытаюсь представить контроллер вида с помощью UIPresentationController
. Мой вопрос, когда мой пользовательский делегат Переход называетПредставляющий контроллер Nill в переходном делетете
func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController?
я вручаю контроллер является nil
вызывая исключение. Я представляю его из контроллера представления, встроенного в контроллер навигации, который встроен в контроллер панели вкладок. Я попытался представить его и с этих контроллеров по той же проблеме. Он также работает правильно, когда нет специальной модальной презентации, но моя цель - настроить ее. Я называю это, когда выбрана кнопка, и код представлен ниже. mapTransitionDelegate
- это мой настраиваемый делегат, который я сохраняю в свойстве класса. Кроме того, EnlargedMapViewController()
инициализируется, чтобы иметь специальную модальную презентацию, так что вызывается мой переходный делегат.
var enlargedMapController = EnlargedMapViewController();
enlargedMapController.transitioningDelegate = mapTransitionDelegate;
presentViewController(enlargedMapController, animated: true, completion: nil);
Я хотел бы узнать, почему эта проблема возникает для будущих знаний. На данный момент мой подкласс UIPresentationController
даже не инициализирован из-за этого исключения.
- это «EnlargedMapViewController», созданный в Interface Builder? Если да, это обычная ловушка. Используйте «IBOutlet», а не создавайте экземпляр программно. – vadian
EnlargedMapViewController() создается все в коде. Тем не менее, мое приложение опирается на раскадровки, главным образом, за исключением этого контроллера представления – user2532485