Я пытаюсь уволить ViewController в быстром, позвонив dismissViewController
вIBAction
@IBAction func cancel(sender: AnyObject) {
self.dismissViewControllerAnimated(false, completion: nil)
println("cancel")
}
@IBAction func done(sender: AnyObject) {
self.dismissViewControllerAnimated(false, completion: nil)
println("done")
}
Я мог видеть сообщение println в выводе консоли, но ViewController никогда не отклоняется. В чем может быть проблема?
ios
swift
viewcontroller
rshankar
источник
источник
Ответы:
Из вашего изображения кажется, что вы представили ViewController, используя push
dismissViewControllerAnimated
Используется для близких ViewControllers , которые представлены с использованием модальныхSwift 2
Swift 4
источник
У меня есть решение вашей проблемы. Пожалуйста, попробуйте этот код, чтобы отклонить контроллер представления, если вы представляете представление, используя модал:
Свифт 3:
ИЛИ
Если вы представляете вид с помощью «push» segue
источник
если вы сделаете это, я думаю, вы не можете получить сообщение println в консоли,
источник
В Swift 3.0 до 4.0 это так же просто, как напечатать это в вашей функции:
Или, если вы находитесь в контроллере навигации, вы можете «вытолкнуть» его:
источник
добавьте эту строку в скобки:
источник
Использование:
вместо того:
источник
Если вы представляете контроллер без контроллера навигации, вы можете вызвать следующий код из метода представленного контроллера.
Если ваш ViewController представлен модально, необязательное представление ViewController будет не равным нулю, и код будет выполнен.
источник
Основываясь на своем опыте, я добавляю метод, чтобы отклонить меня как расширение UIViewController:
Затем я вызываю этот метод для отклонения контроллера представления в любом
UIViewController
подклассе. Например, в действии отмены:источник
Из документации Apple :
Таким образом, это плохая практика, чтобы просто вызвать увольнение метод от самого себя.
Что вы должны сделать, если вы представляете это модально:
источник
Не создавайте переходы от Cancel или Done к другому VC и пишите этот код только своими кнопками @IBAction
источник
Вот один из способов отменить текущий контроллер представления и вернуться к предыдущему контроллеру представления. Вы можете сделать это только через раскадровку.
Пожалуйста, попробуйте это, это работает со мной.
Второй способ - Использование -
navigationController.popViewControllerAnimated(true)
Удачи ..
источник
Для справки, имейте в виду, что вы можете отклонить неправильный контроллер представления. Например, если у вас есть окно предупреждения или модал, отображаемый поверх другого модала. (Например, в верхней части вашего текущего модального оповещения может отображаться оповещение о публикации в Твиттере). В этом случае вам нужно дважды позвонить в dismiss или использовать режим раскрутки.
источник
Если вы представляете ViewController модально и хотите вернуться к корневому ViewController, позаботьтесь о том, чтобы закрыть этот модально представленный ViewController, прежде чем вернуться к корневому ViewController, в противном случае этот ViewController не будет удален из памяти и приведет к утечкам памяти.
источник
В Swift 3.0
Если вы хотите отклонить представленный контроллер представления
источник
В Swift 4.1 и Xcode 9.4.1
Если вы используете pushViewController для представления нового контроллера представления, используйте это
источник
Попробуй это:
источник
Так как вы использовали push представленный viewController, следовательно, вы можете использовать
источник
Этот код написан в кнопке действия, чтобы уволить
источник
источник
Если вы используете настоящий метод в родительском VC, вам следует вызвать эту функцию, чтобы закрыть дочерний VC, используйте эту
если вы вызываете дочерний VC с помощью метода push, чтобы отклонить дочерний VC, используйте это
источник