Intereting Posts
Как настроить iOS Simulator с iOS 7, чтобы сделать рекламуTrackingEnabled возвратой NO? Задержка анимации не работает должным образом в iOS, почему? Ошибка EXC_BAD_ACESS в SpriteKit на iOS8 iOS Как нарисовать часть изображения для конкретного прямоугольника? Компилятор LLVM – как я могу отключить оптимизацию по определенной функции? Могут ли пользователи iphone удалить данные привязки вашего приложения? Как сохранить фиксированный Aspect UIView, заполняя экран в любой ориентации экрана программным способом в быстром режиме? Правильная практика заполнения класса модели в iPhone Очередь прерывания или операция записи файла в iOS Дублировать проект в рабочей области xcode FlurryAds: для этого места нет объявлений с сервера. IOS Как сделать пустой UITextView прокручиваемым, как Notes на iOS? Как загрузить UINavigationController из XIB или раскадровки Я хочу получить доступ к var во втором контроллере представления в быстром коде Если выражение для выбора между несколькими CALayer

отключить текущий 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) } })