DestinationViewController Segue и UINavigationController, использующие swift - PullRequest
0 голосов
/ 02 мая 2018

Я создал боковое меню, которое появляется, когда вы нажимаете на кнопку панели, После того, как вы нажмете одну из опций меню, контроллер представления загрузится с правильными данными, но элемент панели кнопок исчезнет. поэтому я провел небольшое исследование и я обнаружил, что проблема заключается в моем пункте назначения segue. Моим пунктом назначения segue является контроллер представления, а не контроллер навигации, поэтому я пытаюсь изменить свой код, заканчивая этим:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if let cell = sender as? UITableViewCell{
            let i = tableView.indexPath(for: cell)!.row
            if segue.identifier == "viewController"{

                let nav = segue.destination as! UINavigationController
                let addEventViewController = nav.topViewController as! ViewController

                addEventViewController.varView = i
                }  
            }
        } 

И теперь я получаю эту ошибку:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Моя раскадровка: enter image description here

Ответы [ 2 ]

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

Я думаю, что проблема в том, что вы вызываете segue из вашего BackTableVC, и нет перехода к контроллеру навигации, только к контроллеру, который расположен внизу справа в вашей раскадровке. Вы должны либо выполнить переход на RevealViewController, либо заново связать переход, чтобы он привел к контроллеру навигации.

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

Пожалуйста, обновите ваш код, как показано ниже. Здесь sharedAppdelegate () является общим экземпляром appdelegate

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let cell = sender as? UITableViewCell{
        let i = tableView.indexPath(for: cell)!.row
        if segue.identifier == "viewController"{

            let yourDestinationController = segue.destination as! ViewController
            let nav = UINavigationController.init(rootViewController: yourDestinationController)
            let win = AppDelegate.sharedAppdelegate().window
            win.rootViewController = nav
            win?.makeKeyAndVisible()
            addEventViewController.varView = i
            }  
        }
    } 

В вашем Appdelegate добавить ниже метод

 static func sharedAppdelegate() -> AppDelegate
{
    return UIApplication.shared.delegate as! AppDelegate
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...