Невозможно программно перейти от контроллера к контроллеру представления - PullRequest
0 голосов
/ 07 декабря 2018

Я хотел бы выполнить действие в функции viewDidLoad моего первого ViewController, который, когда возникает определенное значение переменной a, переходит непосредственно к другому ViewController (часть моей раскадровки).

На самом деле, я уже что-то реализовал, но это не работает:

if let curUser = loadAppUser() {
            appUser = curUser
            testLabel.text = "Chargement de l'utilisateur"
            let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let homePageViewController = storyBoard.instantiateViewController(withIdentifier: "homePageViewController") as! HomePageViewController
            self.present(homePageViewController, animated: true, completion: nil)
        } else {
            testLabel.text = "Sauvegarde du nouvel utilisateur"
            saveAppUser()
        }

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Мне, наконец, удалось отобразить то, что я хочу, просмотрев несколько постов и веб-сайт, на котором у меня кровоточат глаза.

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

В моем storyBoard точка входа настроена на приложение, которому принадлежит кодниже (мой OnboardingPage).

Так вот решение:

if let curUser = loadAppUser() {
            os_log("User found, loading...", log: OSLog.default, type: .debug)
            appUser = curUser
            let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let homePageVC: UIViewController = mainStoryBoard.instantiateViewController(withIdentifier: "homePageViewController") as UIViewController
            let navHomePageVC = UINavigationController(rootViewController: homePageVC)
            self.window = UIWindow(frame: UIScreen.main.bounds)
            self.window?.rootViewController = navHomePageVC
            self.window?.makeKeyAndVisible()
        } else {
            os_log("No user found, creating a new one...", log: OSLog.default, type: .debug)
            saveAppUser()
        }

И это работает нормально.

Для людей, читающих это, я нашел решение, посмотревдля другого способа выполнения моих потребностей.Фактически это решение работает, но я взял совершенно другой угол, играя с Appdelegate и функцией первого запуска (найдено здесь ).Я просто проверяю и сохраняю на applaunch, если это первый запуск, затем я изменяю rootViewController моего приложения, чтобы отображать экраны запуска только при первом запуске.

В этом решении точка входа установлена ​​наhomePage (отображается после OnBoardingPage) так сильно отличается от первого решения.

0 голосов
/ 07 декабря 2018

Кажется, теперь я иду на шаг дальше, но когда я перехожу к следующему ViewController, мои переменные IBOutlet определяются как "nil" (внутри функции viewDidLoad ()).

Заменить

@IBOutlet weak var tableView : UITableView!

на

@IBOutlet var tableView : UITableView!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...