#swift #button #view #controller #back
Вопрос:
После того, как мое приложение выросло, мне пришлось изменить свой «контроллер начального представления» или то, что я понимаю как «точка входа». Поэтому я удалил свой оригинальный навигационный контроллер и встроил вновь созданное представление в новый навигационный контроллер. Я снял флажок с представления, которое изначально было «Контроллером начального представления», и выбрал «Контроллер начального представления» для вновь созданного представления замены. Моя проблема, несмотря на то, что на раскадровке отображается как встроенный в новый навигационный контроллер, при загрузке симулятора в верхней части моих представлений есть пробел, и хотя на раскадровке отображается кнопка «назад») в симуляторе нет видимой кнопки «назад». Представления представлены так, как я понимаю, «модально» (снизу вверх) и могут быть удалены, проведя пальцем вниз.
введите описание изображения здесь
То, что я пытаюсь сделать, — это поведение, подобное тому, когда представление встроено в контроллер вида с помощью кнопок назад и ввода справа налево (но я встроил свой первоначальный контроллер вида, но поведение сохраняется)
Я убедился в этом (при создании сегментов для выбора «показать»), и когда я удалил НОВЫЙ контроллер вида после описанного поведения и повторно добавил кнопки назад, где они были видны временно, но после закрытия и перезапуска он вернулся к модальному режиму.
Я уверен, что есть много вещей, которые я не смог объяснить, но я надеюсь, что это кому-то покажется знакомым, и я отвечу на любые вопросы, которые я забыл объяснить. Все еще очень новичок в Swift, и мы искренне ценим любую помощь. Спасибо.
Ответ №1:
Похоже, у вас точка входа в раскадровку установлена на контроллере начального представления, а не на контроллере навигации. Это делает навигационный контроллер в значительной степени бесполезным, поэтому все по-прежнему представлено модально. На втором изображении есть небольшая стрелка, указывающая на ваш контроллер начального просмотра (экран с кнопками «зарегистрироваться» и «войти»). Это выглядит так:
Это точка входа в раскадровку. Он должен быть на навигационном контроллере, а не на контроллере начального вида. Чтобы устранить проблему, вы можете выполнить одно из следующих действий:
Перетащите стрелку влево от навигационного контроллера.
или
Выберите контроллер навигации и в инспекторе атрибутов установите флажок «Является контроллером начального представления».
Стройте и запускайте, и вы должны быть готовы к работе.
Я видел, что вы сказали о том, как в раскадровке отображаются кнопки «назад», и вот почему я думаю, что это так, но не в симуляторе: Раскадровка Xcode, вероятно, думает, что, поскольку представление встроено в навигационный контроллер, навигационный контроллер будет загружен, поэтому он показывает, что произойдет, если навигационный контроллер был фактически загружен. Но поскольку точка входа в раскадровку проходит прямо над навигационным контроллером, навигационный контроллер никогда не загружается во время выполнения.
Комментарии:
1. Извините за задержку после такого быстрого ответа. Большое спасибо Су за помощь. Я ценю, что вы уделяете время нашему дню, и я обязательно дам вам знать, как я справляюсь.
2. Вот и все. Работает как заклинание. Еще раз спасибо.
Ответ №2:
Ваш контроллер не находится в навигационном стеке. Вы настроили только панель навигации контроллера.
Пожалуйста, попробуйте выполнить следующие шаги.
- Выберите контроллер вида в раскадровке.
- Перейдите в главное меню
Editor
->>Embed In
->Navigation Controller
Это все.
Комментарии:
1. Большое тебе спасибо. Искренне признателен вам за то, что вы уделили время своему дню. Я дам тебе знать, как я справлюсь.
2. Все уладилось. Еще раз спасибо.
3. Пожалуйста. Если это сработает, пожалуйста, примите или проголосуйте за мой ответ.