Apri la prima vista in base alla condizione
Voglio che la mia app controlli all'inizio in modo condizionale se una variabile è corretta o meno. Sulla base di ciò dovrebbe andare a una schermata di introduzione (dove può selezionare una variabile nel mio caso selezionare una squadra) o dovrebbe avviare la vista principale. Dopo aver cercato ho trovato questo codice e l'ho modificato.
Ma sembra che ci siano ancora problemi. Prima di tutto non ho due identificatori. L'introduzione ne ha una ma non la vista principale. La mia vista principale si chiama WeatherViewController e la schermata Intro si chiama FirstScreenViewController.
Ho anche aggiunto un'immagine del mio Main.storyboard. Ho anche cercato su Google molto su UINavigationController condizionale, ma posso capire solo con un video e non ho trovato un video al riguardo.
Ho provato a utilizzare il codice da qui .

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)
}
Risposte
Ripeti semplicemente i passaggi che hai fatto per creare il segue goToIntro
.
- Aggiungi una nuova
UIViewController
(MainViewController
) nello storyboard. - Aggiungi un segue e dagli un identificatore.
- Fornisci il valore dell'identificatore nella condizione else del codice che hai mostrato nel tuo post per eseguire il segue al
UIViewController
che hai appena creato.
Il codice finale dovrebbe essere simile a questo:
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)
Non è necessario il if else
blocco poiché id
è già determinato utilizzando l' ?
operatore ternario.