2017-08-07 3 views
0

Dans une application simple qui montre simplement un contrôleur de vue partagée, quelle est la meilleure façon d'afficher une connexion à l'utilisateur avant que le maître/détail est affiché et, une fois la connexion est confirmée, affichez le le maître/détail du contrôleur de vue partagée?Une solution élégante pour le contrôleur Split view vs Login

Existe-t-il une manière élégante de gérer ceci sans avoir une hiérarchie de vue désordonnée? J'utilise IB pour construire les vues mais une solution programmatique est également la bienvenue.

+1

Modifier le contrôleur de vue sur la fenêtre principale une fois que la connexion est accordée? – Desdenova

+0

La connexion est une tâche distincte consistant à faire remonter les informations du maître au détail - je diviserais les rôles en deux VC comme le dit @Desdenova, ou bien, garder un seul VC et superposer une vue par-dessus. Ils devraient être séparés cependant. –

Répondre

0

Je présenterait une vue modale au démarrage, que vous pouvez ensuite configurer avec des champs de connexion. Cela vous permet de conserver l'affichage partagé en tant que vue racine. Dans didFinishLaunchingWithOptions de AppDelegate, vous pouvez ajouter quelque chose comme:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let modalView = storyboard.instantiateViewController(withIdentifier: "startupView") 
    modalView.modalPresentationStyle = .formSheet 
    splitViewController.present(modalView, animated: true, completion: nil) 

après avoir configuré votre point de vue partagé. Cela présenterait un contrôleur de vue avec l'identificateur "startupView" que vous pouvez ensuite configurer dans Storyboard.

EDIT - vous pouvez également définir une vue modale en tant que page ou flouter l'arrière-plan si vous ne souhaitez pas que l'utilisateur voit le contenu principal/détail avant de se connecter.

-1

Après réussir connexion, vous définissez la racine de la fenêtre à SplitViewController comme ça:

let splitVC = UISplitViewController() 
let window = UIApplication.shared.windows.first 
window?.rootViewController = splitVC