Segue от Tab Bar Controller к View Controller и обратно

xcode

#1

Здравствуйте,

Я новичок в программировании. Нужен совет по правильному созданию segue. Когда я создаю переход от Tab Bar Controller на отдельный View Controller, на этом контроллере появляется полоска внизу как на Tab Bar Controller (Рис. 1). Когда я пытаюсь создать segue с View Controller на Tab Bar Controller - полоска пропадает на двух экранах. В итоге вернувшись на Tab Bar Controller я никуда не могу перейти используя нижнее меню.

Что я делаю не так? Заранее благодарен.

Рис. 1

Рис. 2


#2

Во первых - у вас точка входа доллжна быть таб бар контроллер, а не вью контроллер.
Во вторых - у вас либо таб бар должен быть помещен в навигейшн контроллер, либо каждый из итемов (вью контроллеров) таббар.
В третьих - переходы на предыдущий экран осуществляются с помощью

 navigationController.popViewController(animated: true)

если используете в коде, либо с помощью backButton, которая появляется при использовании навигейшн контроллера.


#3

Точка входа у меня на Tab Bar Controller, это я экспериментировал и сделал скрин во время эксперимента.

Можно ли делать переходы без Navigation Controller используя обычные кнопки?


#4

Можно. А зачем? Если вам не нужен навигейшн бар - просто скройте его

navigationController.isNavigationBarHidden = true

#5

Спасибо за ответы.

Я же учусь и хочу понять и изучить все возможные способы переходов между View Contollers.

А как поместить Tab Bar Controller в Navigation Controller?


#6


#7

Спасибо большое, Ваш метод помог. Правда я не разобрался пока как отключать отображение Navigation Controller, но не это главное. Мне это решение кажется не совсем элегантным. Неужели нет более простого решения основанного на segue или коде? Неужели Apple не предусмотрели такого варианта? Или я не понимаю каких-то основ использования segue?


#8

Есть методика разработки без использования InterfaceBuilder, я с ней практически не знаком, емнип там вообще не используется navigationController.

 naviagtionController?.isNavigatonBarHidden = true

Вы еще не раз столконетесь с многими не очень или очень не элегантными решениями некоторых проблем.


#9

Ещё раз спасибо за помощь!


#10

Не за что. (двадцатьсимволов)


#11

И снова здравствуйте! :slight_smile:

Предложенное выше решение мне не совсем подходит ввиду того что мне надо возвращаться на предыдущий VC скажем так незаметно:

  1. Через определённое время по таймеру
  2. При нажатии пользователем по определённой кнопке в определённом месте экрана.

Предложенный выше метод, насколько я разобрался позволяет вернуться только с помощью кнопки “< Назад”, что мне не подходит.

Как же решить мою проблему?


#12

В первом сообщении писал


#13

То ли лыжи не едут…

Помогите разобраться. Делаю segue с Tab Bar на простой VC. А с простого VC кодом в Button возвращаюсь на Tab Bar Controller? Я правильно понимаю?
Если да, то у меня этот код не работает. При нажатии на кнопку - обратного перехода не происходит.


#14

Покажите проект, так будет быстрее.


#15

Ссылка на проект на Google Drive


#16

Конечно, вам же возвращатся некуда - вы не поместили таббар в навигейшн контроллер.
На заметку - для каждого вью контроллера в сториборде дожен быть свой класс.


#17

Конечно, вам же возвращатся некуда - вы не поместили таббар в навигейшн контроллер.

Значит мне надо опять подключить Navigation Controller, скрыть его, а потом использовать метод:
navigationController.popViewController(animated: true) ? Я правильно понял?

На заметку - для каждого вью контроллера в сториборде дожен быть свой класс.

Спасибо, Иван в своих видео об этом часто говорит. Учту.


#18

Да - навигейшн контроллер отвечает за навигацию между контроллерами.


#19

Если вам интересно как созвадать приложение без IB - в этой статье есть ссылка на пример.


#20

Спасибо за ссылку. Теперь у меня получилось с переходами. Но для меня стало откровением то, что надо использовать Navigation Controller для переходов и прятать его потом. А если мне понадобится где-то отображать Navigation Controller, а где-то скрыть, как тут быть?