Пользовательские сегы в Swift - PullRequest
0 голосов
/ 11 февраля 2020

Я кодирую приложение в Swift 4, используя Xcode 11, и у меня есть экран приветствия для пользователей. На экране приветствия есть кнопка, и я хочу, чтобы она переместила пользователя с экрана приветствия на главный экран приложения. Мне не нужен причудливый анимированный переход или что-то еще, я просто хочу пользовательский переход, который не позволяет им когда-либо вернуться на домашний экран, в отличие от обычных переходов, которые позволяют вам вернуться на исходную страницу. Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 11 февраля 2020

Существует несколько способов управления презентацией вашего приложения.

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

func onButtonPress(_ sender: Any) {
    self.navigationController.viewControllers = [self.navigationController.topViewController]
}

Это самый тривиальный случай, но он показывает установку свойства viewControllers для массива, состоящего из просто самого верхнего контроллера вида стек навигации. Также есть очень неплохо setViewControllers(_ viewControllers: [UIViewController], animated: Bool), если вы хотите анимировать презентацию на новом контроллере представления, на который стоит посмотреть в зависимости от интересующего вас эффекта.

Во-вторых, вы можете в своем приложении делегату представить модальный контроллер вида поверх вашего root контроллера вида. Когда пользователь нажимает кнопку dismiss модал. Boom! Они никогда не могут go вернуться назад.

В-третьих, вы можете поменять rootViewController окна. Это самый сложный вариант, и, вероятно, его не следует делать, но это вариант.

0 голосов
/ 13 февраля 2020

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

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

0 голосов
/ 11 февраля 2020

Это можно сделать с помощью такого перехода, вы не можете go назад, потому что между этими ViewControllers нет панели навигации.

enter image description here

enter image description here

...