Не могу привести значение типа UINavigationController - PullRequest
0 голосов
/ 23 мая 2018

Итак, у меня есть VC, который встроен в контроллер навигации, который, в свою очередь, встроен в родительский VC с еще 2 контейнерами.Для всех трех контейнеров я использую функцию (из Parent VC), чтобы манипулировать ими, чтобы показать их.

Как видно на картинке, когда я нажимаю на кнопку 3 строки в Voice VC, происходит сбой при Could not cast value of type 'UINavigationController' (0x1b5614200) to 'Pro.VoiceParentViewController Если я вставляю только Voice Parent VC .. мои кнопки назад больше не работают _ = navigationController?.popToRootViewController(animated: true)

причина

po navigationController -> nil

РЕДАКТИРОВАТЬ

class VoiceParentViewController: UIViewController {
@IBOutlet weak var container_voiceVC: UIView!
@IBOutlet weak var container_menuVC: UIView!
@IBOutlet weak var containerSettingsVC: UIView!


@IBOutlet weak var constraint_trailingVoiceContainer: NSLayoutConstraint!
@IBOutlet weak var constraint_leadingVoiceContainer: NSLayoutConstraint!


override func viewDidLoad() {
    super.viewDidLoad()

}


func menuTouched() {
    constraint_leadingVoiceContainer.constant = self.view.bounds.maxX
    constraint_trailingVoiceContainer.constant = 2*self.view.bounds.maxX
    UIView.animate(withDuration: 0.6, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: .curveEaseInOut, animations: {
        self.view.layoutIfNeeded()
    }) { (isCompleted) in
    }
}

.....

class VoiceViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {


override func viewDidLoad() {
    super.viewDidLoad()



@IBAction func action_menu(_ sender: Any) {
    (self.parent as! VoiceParentViewController).menuTouched()
}

........

class NewConversationViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var mainTableView: UITableView!


override func viewDidLoad() {
    super.viewDidLoad()


@IBAction func backButtonPressed(_ sender: Any) {
    _ = navigationController?.popToRootViewController(animated: true)
}

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Вставьте VoiceParentViewController в NavigationController, затем убедитесь, что первый ViewController равен VoiceParentViewController, а затем это выдвигает VoiceViewController.Это убедится, что navigationController?.popToRootViewController(animated: true) работает.

0 голосов
/ 23 мая 2018

Встроенный ваш ProfileViewController и VoiceViewController в навигационный контроллер.

Отредактировано

Я думаю, что проблема заключается в использовании дочерних контроллеров с представлением контейнера.Я могу быть не прав.Но я создал быстрое демо для вас так же, как ваш цикл навигации.Оформить заказ этот код - https://drive.google.com/open?id=1faFagqDZwpfRN7lzDPknQAeWGvhx3271

enter image description here

0 голосов
/ 23 мая 2018

Только что встроенный VoiceParentViewController в контроллер навигации вместо встроенный VoiceViewController в контроллер навигации

...