我正在试图找到一种正确的方法,有条件地使用swiftui包含一个视图.我无法直接在视图中使用if,只能使用

这是可行的,但似乎会有更干净的方法.

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

推荐答案

避免使用HStack这样的额外容器的最简单方法是将body属性注释为@ViewBuilder,如下所示:

@ViewBuilder
var body: some View {
    if user.isLoggedIn {
        MainView()
    } else {
        LoginView()
    }
}

Swift相关问答推荐

阴影动画的动画不流畅

SWIFT:使字典数组值可变

带DispatchSourceTimer的定时器

无法创建MKAssociateRegion对象

物理主体未与 spritekit Swift 的网格图案上的纹理图像对齐

Xcode 15 Beta中如何使用@Observable?

避免 `(())` 显式指定 Void 类型的枚举关联值

如何在 switch case 模式语句中使用 Swift 文字正则表达式?

如何打印出此 struct 中的数据?

Swift 全局函数列表

Swift 非参与者隔离闭包

如何使用 Swinject 注册符合 ObservableObject 的协议?

展开 List 中的 HStack 以端到端但不是从上到下,因此看起来项目之间有更宽的空间

在 iOS 中使用 Swift 保存 PDF 文件并显示它们

如何使用 swift 将 Images.xcassets 中的图像加载到 UIImage 中

使用 DispatchTime.now() + float 延迟?

playground 导入:没有这样的模块Foo

用 UIBezierPath 画一条线

来自 ObservableObject 的绑定值

转换为 swift 3 后,视图控制器中出现奇怪的通用函数