2017-01-20 5 views
0

У меня есть 2 раскадровки. в Main.storyboard У меня есть контроллер с кнопкой. Когда кнопка нажата, я загружаю второй раскадровку Second.storyboard. Это код, я использую, чтобы загрузить Second.storyboardКнопка навигации контроллера навигации не отображается при использовании второй раскадровки

DispatchQueue.main.async { 
    let storyBoard : UIStoryboard = UIStoryboard(name: "Second", bundle:nil) 

    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "Tools") as UIViewController 
    self.present(nextViewController, animated:true, completion:nil) 
} 

В Second.storyboard У меня есть контроллер навигации и 2 вид контроллера А и В.

Проблема в том, что при запуске, я не» t см. обратную кнопку в B, чтобы вернуться к A.

То, что я пробовал: Я создал другой проект. Я встроил контроллер навигации и 2 контроллера вида A и B в main.storyboard. Это прекрасно работает. Отобразится кнопка «Назад». Это говорят мне, что я что-то не хватает, когда я загружаю второй раскадровку

Я попытался добавить это

// Do any additional setup after loading the view. 
self.title = "Title" 

let navigationBar = navigationController!.navigationBar 
navigationBar.tintColor = UIColor.blue 

let leftButton = UIBarButtonItem(title: "Left Button", style: UIBarButtonItemStyle.plain, target: self, action: nil) 
let rightButton = UIBarButtonItem(title: "Right Button", style: UIBarButtonItemStyle.plain, target: self, action: nil) 

navigationItem.leftBarButtonItem = leftButton 
navigationItem.rightBarButtonItem = rightButton 

Я вижу некоторые образцы, которые загружаются раскадровки без этой линии DispatchQueue.main.async {}. Однако; Если я не использую его, я получаю сообщение об ошибке и программа раздавит.

Как добавить контроллер навигации? Я выбираю первый контроллер просмотра, редактор, встроенный, навигационный контроллер.

Я пытаюсь отобразить контроллер навигации на втором раскадровке, и он не показывает кнопку «Назад».

Иглы сказать, что это второе приложение, которое я пытаюсь сделать, и любая помощь будет очень оценена.

ответ

1

Что вы видите после представления «Второго»? Вы вообще видите область заголовка/заголовка? Просто кнопка «Назад» отсутствует?

  • Как вы нажимаете B от A?

  • Я подозреваю, что «Инструменты» не являются навигационным контроллером в «Second». При вызове storyBoard.instantiateViewController(withIdentifier: "Tools") вы хотите быть ссылки на Nav контроллер - не A.

+0

Graham Перкс, Спасибо за кусок кода. К сожалению; он не загружает следующий контроллер представления. Нет ошибок. Он просто не загружает следующий вид. –

+0

Ах, извините, я неправильно понял. Я изменил свой ответ. –

+0

Вот как я загружаю вторую раскадровку. DispatchQueue.main.асинхронная { пусть раскадровка: UIStoryboard = UIStoryboard (название: "Второй", расслоение: ноль) пусть nextViewController = storyBoard.instantiateViewController (withIdentifier: "Инструменты") в UIViewController self.present (nextViewController, анимированный: правда, завершение: nil) }. Я не вижу никакого названия, я не вижу кнопку «Назад». –

0

Вызов presentViewController представляет модально вид контроллера, вне существующей навигации стека; он не содержится вашим UINavigationController или любым другим. Если вы хотите, чтобы ваш новый контроллер представления, чтобы иметь панель навигации, у вас есть два основных варианта:

Нажмите новый контроллер представления на существующей навигации стека, а не представляя его модально:

пусть VC1 = self.storyboard ! .instantiateViewControllerWithIdentifier («MyViewController») как! ! ViewController self.navigationController .pushViewController (VC1, анимированные: правда)

Я нашел этот ответ в этом posthttp: //stackoverflow.com/questions/25444213/presenting-viewcontroller-with-navigationviewcontroller-swift

Смежные вопросы