Я создаю приложение ios с помощью xcode без использования раскадровки, но у меня проблема, мне нужно сделать мои дисплеи в полноэкранном режиме, но он не работает - PullRequest
0 голосов
/ 29 мая 2020

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

логин

регистрация

забыл пароль

и домой

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

«У вас нет учетной записи? Зарегистрируйтесь» -> которая приведет вас к форме регистрации

«Забыли пароль» -> которая приведет вас к форме забытого пароля

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

это код, который позволяет вам переключаться на разные контроллеры:

из формы входа в перейдите к форме регистрации

let signUpButton: UIButton = {
    let button = UIButton(type: .system)
    button.setTitle("Don't have an account? Sign up", for: .normal)
    button.setTitleColor(UIColor(red: 170/255, green: 170/255, blue: 170/255, alpha: 1), for: .normal)
    button.addTarget(self, action: #selector(handleShowSignUp), for: .touchUpInside)
    return button
}()

@objc func handleShowSignUp() {
      let signUpVC = SignUpVC()
        self.navigationController?.pushViewController(signUpVC, animated: true)
  }

из формы входа, чтобы перейти к форме забытого пароля:

let forgotPasswordButton: UIButton = {
    let button = UIButton(type: .system)
    button.setTitle("Forgot password?", for: .normal)
    button.setTitleColor(UIColor(red: 170/255, green: 170/255, blue: 170/255, alpha: 1), for: .normal)
    button.addTarget(self, action: #selector(forgotPassword), for: .touchUpInside)
    return button
}()

@objc func forgotPassword() {
    let forgotPassword = ForgotPasswordVC()
    self.navigationController?.pushViewController(forgotPassword, animated: true)

     }

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

logInVC.modalPresentationStyle = .fullScreen

(очевидно, отформатирован в соответствии с указанным c контроллером просмотра)

как это исправить?

Я не добавил ничего в свой файл appdelegate, кроме:

FirebaseApp.configure()

Я добавил следующее в свой делегат сцены:

       guard let mainScene = (scene as? UIWindowScene) else { return }
            window = UIWindow(windowScene: mainScene)
            let mainTabVC = MainTabVC()
            window?.rootViewController = UINavigationController(rootViewController: mainTabVC)
            window?.makeKeyAndVisible()

1 Ответ

1 голос
/ 29 мая 2020

Используйте

navController.modalPresentationStyle = .fullScreen

вместо

logInVC.modalPresentationStyle = .fullScreen

Напишите этот код перед представлением navController.

Надеюсь, это поможет вам

...