Intereting Posts
AVPlayerItem: сегмент превышает указанную полосу пропускания Сохранить аудиофайл после применения фильтра (AVAudioUnitEQ) и, наконец, сохранить его как mp3? Сортировка массива словарей по числу Использование делегата для передачи данных через несколько контроллеров представлений Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Дублировать состояния в очереди» Более короткий способ получить текст из объекта неизвестного класса (id) Преимущества использования Слабая переменная вместо сильного Проблема при дифференциации метаданных для UILabel? Сбой приложения: индекс из привязанных в случайных местах SpriteKit: обнаружение перекрытия вращающихся узлов? Есть ли переопределение iOS для отображения отзыва? Отмена NSOperation с NSURLConnection Правильно обработать didReceiveMemoryWarning Как вы можете получить представление в представлении пользовательского UIView в контуре документа? VNC Open Source для iOS

отключить текущий UIViewcontroller и представить новый UiViewController

Я намерен отклонить мой текущий UIViewController и представить его новому UIViewController .

Я использовал следующий код

  let newViewController: ViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as! ViewController self.presentViewController(newViewController, animated: false, completion: { self.dismissViewControllerAnimated(false, completion: nil) }) 

Это дало следующую ошибку

2016-06-04 11: 40: 59.864 myApp [851: 117649] Пытаясь уволить
контроллер представления при переходе уже. (<_UIFullscreenPresentationController: 0x1703e6900>) 2016-06-04 11: 40: 59.878 ePassBook [851: 117649] transitionViewForCurrentTransition не установлен, диспетчер презентации был уволен во время презентации? (<_UIFullscreenPresentationController: 0x1703e6900>)

Используйте этот код,

Код цели C:

 [self.navigationController presentViewController:newViewController animated:NO completion:^{ dispatch_after(0, dispatch_get_main_queue(), ^{ [self.navigationController dismissViewControllerAnimated:NO completion:nil]; }); }]; 

Быстрый код:

 self.navigationController?.presentViewController(newViewController, animated: false, completion: { () -> Void in dispatch_after(0, dispatch_get_main_queue(), { () -> Void in self.navigationController?.dismissViewControllerAnimated(false, completion: nil) }) }) 

надеюсь, что он полезен

Сначала вам нужно уволить текущий существующий viewcontroller после того как вы только представите другой, потому что одновременно вы не можете представить два viewcontrollers поэтому ваш код должен быть похож,

  self.dismissViewControllerAnimated(false) { () -> Void in self.presentViewController(newViewController, animated: true, completion: nil) } 

Если вы используете navigation controller то представляете или отклоняете VC на navigation controller

Обновление по вашему запросу в комментарии:

Возьмем пример,

У вас есть три контроллера просмотра: A, B и C, а в настоящее время представлен viewController – C. как A -> B -> C

Теперь вы хотите уволить C и представить новый D, тогда вы должны сделать экземпляр B, потому что вы увольняете C, поэтому самопознание ничего не значит. Это ноль.

Таким образом, вы должны сделать экземпляр B, чтобы сказать b и представить D на этом b

Что-то вроде,

  self.dismissViewControllerAnimated(false) { () -> Void in b.presentViewController(d, animated: true, completion: nil) } 

Если вы используете контроллер навигации, тогда это должно быть похоже,

  b.navigationController.presentViewCon..... 

Попробуйте этот код, я думаю, что это полезно.

Objective-C

 [self.navigationController presentViewController:newViewController animated:NO completion:^{ dispatch_async(dispatch_get_main_queue(), ^(void){ //Run UI Updates [self.navigationController dismissViewControllerAnimated:NO completion:nil]; }); }]; 

СВИФТ

 self.navigationController?.presentViewController(newViewController, animated: false, completion: { () -> Void in dispatch_async(dispatch_get_main_queue()) { self.navigationController?.dismissViewControllerAnimated(false, completion: nil) } })