2016-06-06 3 views
2

Я читал несколько сообщений об этой проблеме, но у меня были устранение неполадок, а предыдущие solutions, похоже, не делают трюка (то есть в решениях указывается , вставляя только родительский контроллер в навигационный контроллер, который я пробовал). Чтобы решить эту проблему в соответствии с предыдущими сообщениями, я удалил вложение других представлений в свои собственные контроллеры навигации, но потом не может физически рисовать segue из одного вида таблицы в другой; или он не показывает кнопку «Назад» ...Кнопка «Назад» исчезает на шоу segue

В принципе, кнопка «Назад» исчезает в режиме segue. Он не отображается во втором TableViewController и последнем ViewController (в конце). Очевидно, оно появляется у родителя.

Storyboard Image

EDIT: Когда я удалить навигационный контроллер с двумя другими видами, то на этих VCs не появляется вообще нет панели навигации. Бар полностью исчезает, хотя он появляется на первом. Вот как я настроил его сейчас.

New Storyboard

+2

Вам не нужно встроить каждый контроллер в контроллер навигации. Вот почему кнопка «Назад» не отображается. Удалите все навигационные контроллеры, кроме первого, установите правильные подключения, и появится кнопка «Назад». Решение встраивания в контроллер навигации только родительского контроллера. Если это не сработало для вас, значит, вы сделали что-то неправильно. Причина, по которой кнопка не отображается, заключается в том, что вы создаете новую навигацию, которая в основном означает, что с этой точки не будет пути назад. –

+0

Я пробовал это. Хотя все это происходит хорошо, теперь вся панель навигации наверху исчезла на других видах (кроме родительского вида). Я добавил segue между ячейкой представления таблицы одного контроллера в другой вид таблицы, так как это не позволит мне добавить какие-либо другие соединения между двумя контроллерами. – illuminatedtype

+0

Какой тип segue вы указываете? –

ответ

1

Навигационный контроллер следует за Stack theory. Когда вы нажимаете что-то в стеке, он увеличит индекс верхнего индекса на 1 и поп-что-то в стеке уменьшит индекс верхнего индекса на 1.

В навигационном контроллере первым контроллером будет ваш root viewController. Теперь, когда вы нажимаете новый контроллер просмотра в контроллере навигации, ваш верхний индекс будет равен 2. Но вы не нажимаете viewController в том же навигационном контроллере (скажем, Stack1), что вы создаете новый контроллер навигации (скажем, Stack2).

Итак, здесь вы устанавливаете новый контроллер в качестве корневого контроллера управления для нового контроллера навигации (Stack2), и нет элемента для всплытия, поэтому он не показывает кнопку «Назад».

Чтобы решить эту проблему, удалите навигационный контроллер со второго и третьего контроллеров.

Чтобы нажать, вы можете использовать segue, или вы можете сделать это программно.

Swift

let vc2 = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as? ViewController2 
self.navigationController?.pushViewController(vc2!, animated: true) 

Objective C

ViewController2 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"]; 

[[self navigationController] pushViewController:vc2 animated:YES]; 

Navigation Controller Guideline

Редактировать , если вы не в состоянии видеть панель навигации второго VC

  1. Убедитесь, что вы не скрываете его кодом во втором VC.
  2. Убедитесь, что вы нажимаете второй VC, не представляя VC.
  3. Выберите VC в Interface Builder -> Attribute Inspector -> Верхняя панель должна быть выведена.
  4. если вы используете segue, тогда тип segue (вид) должен быть Show.
+0

«Push» устарел с iOS 8. –

+0

@ T.Pasichnyk вы правы. позвольте мне изменить его. – Mahesh

+0

А также задан вопрос о языке программирования Swift. –

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