Как перенести обратно в контроллер представления из контроллера представления, который не подключен к другим контроллерам представления? - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю над приложением для iOS, в котором контроллер представления не подключен к другим контроллерам представления. В настоящее время я пытаюсь получить кнопку для возврата обратно в контроллер представления входа в систему / регистрации из контроллера основного представления, который создается после того, как пользователь вошел в систему. Контроллер представления, который создается после того, как пользователь вошел в систему, не подключен к другие контроллеры представления. Способ, которым я получаю к неподключенному контроллеру представления, является с

func transitionToHome() { let homeViewController = storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewControllers) as? homeViewController

view.window?.rootViewController = homeViewController
view.window?.makeKeyAndVisible()}

Я также включаю изображение контроллеров представления так, чтобы легче понять, как у меня это есть настроить фотография контроллеров представления

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

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Несмотря на то, что вы можете поменять rootViewController после запуска приложения, может быть проще упорядочить контроллеры представления, чтобы они все ссылались на один rootViewController.

Если вы хотите, чтобы начальный экран входа в систему пропускался при последующих запусках приложения, вы можете сделать контроллер представления входа в систему rootViewController и в viewDidAppear () перейти прямо к контроллеру основного представления, когда вход в систему не выполнен. требуется. Тогда вы можете раскрутить переход для «выхода из системы».

В приложении делегат:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let loginViewController = UIStoryboard(name: "Login", bundle: nil).instantiateInitialViewController()
    self.window?.rootViewController = loginViewController
    self.window?.makeKeyAndVisible()
}

Затем в LoginViewController:

func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if alreadyAuthenticated {
        performSegue(withIdentifier: SegueIdentifier.goToMain, sender: self)
    }
}

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

1 голос
/ 02 апреля 2020

Похоже, вам нужно будет сбросить view.window? .RootViewController для входа в систему / регистрации в контроллере. Как то так

view.window?.rootViewController = LoginViewController()
view.window?.makeKeyAndVisible()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...