Как перейти с одного навигационного контроллера на другой iOS - PullRequest
0 голосов
/ 02 сентября 2018

В моем сценарии у меня есть три контроллера вида A, B и C. A является корневым контроллером вида, в A нажимают кнопку для навигации в контроллере вида B и в боковой B вид контроллера, нажимают для навигации в контроллере вида C. Работает нормально по приведенному ниже коду.

let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "firstview") as? ViewController
self.navigationController?.pushViewController(vc!, animated: true)

Но, на каждом контроллере представления я хочу показать отдельную панель навигации или контроллер навигации. Если я установил панель, она не покрывает строку состояния, но если я встраиваю навигационный контроллер, она показывает правильную панель в раскадровке, но выводит показ предыдущей панели контроллера представления и кнопку назад. Здесь проблема в контроллере представления, который я сделал прозрачным, но B и C также показывают прозрачный. Я хочу показать отдельную панель навигации в B и C.

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Вам нужно будет изменить / обновить заголовок панели навигации, используя

self.navigationItem.title = "your_title"

Если вы хотите добавить какой-нибудь необычный вид на панель навигации, вы можете использовать это

func updateTitle(_ title: String?) {
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 44, height: 400))
    label.text = title
    label.backgroundColor = .clear
    label.textColor = .white
    self.navigationItem.title = ""
    self.navigationItem.titleView = label
}

Надеюсь, это поможет

0 голосов
/ 02 сентября 2018

кажется, что вы встроили контроллер навигации в контроллер корневого представления, и когда вы переходите от одного Vc к другому, панель навигации такая же, как контроллер представления root с кнопкой назад, и это очевидно, потому что вы встроили контроллер навигации в root просмотр контроллера.

одна вещь, которую вы можете сделать, это вместо того, чтобы делать такую ​​передачу:

self.navigationController?.pushViewController(vc!, animated: true)

Вы можете попробовать;

self.present(vc, animated: true, completion: nil)

этот код представляет ваш контроллер вида B и C без контроллера навигации

...