Почему Отсутствуют Кнопки «Назад» И Представления Отображаются Модально, Несмотря На То, Что Они Встроены В Навигационный Контроллер?

#swift #button #view #controller #back

Вопрос:

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

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

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

Я убедился в этом (при создании сегментов для выбора «показать»), и когда я удалил НОВЫЙ контроллер вида после описанного поведения и повторно добавил кнопки назад, где они были видны временно, но после закрытия и перезапуска он вернулся к модальному режиму.

Я уверен, что есть много вещей, которые я не смог объяснить, но я надеюсь, что это кому-то покажется знакомым, и я отвечу на любые вопросы, которые я забыл объяснить. Все еще очень новичок в Swift, и мы искренне ценим любую помощь. Спасибо.

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

Ответ №1:

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

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

Это точка входа в раскадровку. Он должен быть на навигационном контроллере, а не на контроллере начального вида. Чтобы устранить проблему, вы можете выполнить одно из следующих действий:

Перетащите стрелку влево от навигационного контроллера.

или

Выберите контроллер навигации и в инспекторе атрибутов установите флажок «Является контроллером начального представления».

Стройте и запускайте, и вы должны быть готовы к работе.

Я видел, что вы сказали о том, как в раскадровке отображаются кнопки «назад», и вот почему я думаю, что это так, но не в симуляторе: Раскадровка Xcode, вероятно, думает, что, поскольку представление встроено в навигационный контроллер, навигационный контроллер будет загружен, поэтому он показывает, что произойдет, если навигационный контроллер был фактически загружен. Но поскольку точка входа в раскадровку проходит прямо над навигационным контроллером, навигационный контроллер никогда не загружается во время выполнения.

Комментарии:

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

2. Вот и все. Работает как заклинание. Еще раз спасибо.

Ответ №2:

Ваш контроллер не находится в навигационном стеке. Вы настроили только панель навигации контроллера.

Пожалуйста, попробуйте выполнить следующие шаги.

  1. Выберите контроллер вида в раскадровке.
  2. Перейдите в главное меню Editor ->> Embed In -> Navigation Controller

Это все.

Комментарии:

1. Большое тебе спасибо. Искренне признателен вам за то, что вы уделили время своему дню. Я дам тебе знать, как я справлюсь.

2. Все уладилось. Еще раз спасибо.

3. Пожалуйста. Если это сработает, пожалуйста, примите или проголосуйте за мой ответ.