Я пишу простое приложение с помощью swift, и я застрял в следующей точке, у меня есть два контроллера, которые ведут к другому, и когда я нажимаю на кнопку отмены, это всегда приводит к корневому контроллеру, нетнезависимо от того, откуда я прихожу.
У меня есть первый контроллер (UIViewController
), который идет к контроллеру навигации моего целевого контроллера (тот, от которого я хотел бы вернуться к нужному вызывающему контроллеру).
У меня есть второй контроллер (UITableViewController
), который идет непосредственно к моему целевому контроллеру.
Вот код моей кнопки Отмена:
// MARK: - Navigation
@IBAction func lendingCancelButton(_ sender: UIBarButtonItem) {
// Depending on style of presentation (modal or push presentation), this view controller needs to be dismissed in two different ways
let isPresentingInAddLendingMode = presentingViewController is UINavigationController
if isPresentingInAddLendingMode {
dismiss(animated: true, completion: nil)
} else if let owningNavigationController = navigationController {
owningNavigationController.popViewController(animated: true)
} else {
fatalError("the LendingViewController is not inside a navigation controller.")
}
}
ЕслиЯ правильно понял (вы можете исправить меня, если я ошибаюсь, я бы кое-что узнал), он проверяет, является ли ViewController, который представляет мою цель ViewController, NavigationController.
Так что, может быть, в качестве второго контроллера (my UITableViewController
) не проходит через NavigationController, поэтому последним, вызывающим мое целевое представление с NavigationController, всегда является UIViewController
.
Не сомневайтесьТейт, чтобы сказать мне, если это не достаточно ясно (слишком много раз слово «Контроллер» в моем сообщении) или если вам нужен дополнительный код.