В настоящее время я пытаюсь представить контроллер представления, используя UIPresentationController
. Моя проблема в том, что когда мой пользовательский делегат перехода вызывает
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
, а не создавайте экземпляр программно. - person vadian   schedule 01.08.2015