web-dev-qa-db-fra.com

Utiliser conditionnellement la vue dans SwiftUI

J'essaie de comprendre la bonne façon d'inclure conditionnellement une vue avec swiftui. Je n'ai pas pu utiliser le if directement à l'intérieur de la vue et j'ai dû utiliser une vue de pile pour le faire.

Cela fonctionne, mais il semble qu'il y aurait un moyen plus propre.

    var body: some View {
        HStack() {
            if keychain.get("api-key") != nil {
                TabView()
            } else {
                LoginView()
            }
        }
    }
30
Michael St Clair

Et ça?

J'ai un contentView conditionnel , qui est soit un texte ou un icône. J'ai résolu le problème comme ça. Les commentaires sont très appréciés, car je ne sais pas si c'est vraiment "swifty" ou juste un "hack", mais ça marche:

    private var contentView : some View {

    switch kind {
    case .text(let text):
        let textView = Text(text)
        .font(.body)
        .minimumScaleFactor(0.5)
        .padding(8)
        .frame(height: contentViewHeight)
        return AnyView(textView)
    case .icon(let iconName):
        let iconView = Image(systemName: iconName)
            .font(.title)
            .frame(height: contentViewHeight)
        return AnyView(iconView)
    }
}
0
LukeSideWalker