Abrir la primera vista según la condición
Quiero que mi aplicación verifique al inicio condicionalmente si una variable es correcta o no. En base a eso, debería ir a una pantalla de introducción (donde puede seleccionar una variable en mi caso, seleccionar un equipo) o debería iniciar la vista principal. Después de buscar, encontré este código y lo edité.
Pero todavía parece haber problemas. En primer lugar, no tengo dos identificadores. La introducción tiene una, pero no la vista principal. Mi vista principal se llama WeatherViewController y la pantalla de introducción se llama FirstScreenViewController.
También agregué una imagen de mi Main.storyboard. También busqué en Google mucho sobre UINavigationController condicional, pero solo puedo entenderlo con un video y no encontré un video al respecto.
Intenté usar el código de aquí .

var id = hello ? "goToIntro" : "???"
self.window = UIWindow(frame: UIScreen.main.bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let WeatherViewController: UIViewController = mainStoryboard.FirstScreenViewController(withIdentifier: WVC has no identifier??) as UIViewController
self.window?.rootViewController = WeatherViewController
self.window?.makeKeyAndVisible()
if hello {
self.performSegue(withIdentifier: "goToIntro", sender: self)
} else {
/here nothing should happen. It should open the Main View
self.performSegue(withIdentifier: "???", sender: self)
}
Respuestas
Simplemente repita los pasos que hizo para crear la secuencia goToIntro
.
- Agregue un nuevo
UIViewController
(MainViewController
) en su guión gráfico. - Agregue un segue y asígnele un identificador.
- Proporcione el valor del identificador en la condición else del código que ha mostrado en su publicación para realizar la transición al
UIViewController
que acaba de crear.
El código final debería verse así:
var id = hello ? "goToIntro" : "goToMain"
guard let windowScene = scene as? UIWindowScene else { return }
window = UIWindow(windowScene: windowScene)
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let weatherViewController = mainStoryboard.instantiateInitialViewController()
window?.rootViewController = weatherViewController
window?.makeKeyAndVisible()
weatherViewController.performSegue(withIdentifier: id, sender: self)
No necesita el if else
bloque ya id
que ya se determina mediante el ?
operador ternario.