ios - 如何在 SwiftUI 中使用 TabbedView?

标签 ios swift swiftui swift5 ios13

struct ContentView : View {
    var body: some View {
        NavigationView {
            TabbedView {
                PasswordGenerator()
                    .tabItemLabel {
                        Image("KeyGlyph")
                        Text("Generator")
                }

                PasswordGeneratorSettings()
                    .tabItemLabel {
                            Image("SettingsGlyph")
                            Text("Settings")
                }
            }
        }
    }
}

这不会编译,但在 WWDC 的 Swift Essentials 视频中使用了它(见第 54:30 分钟)并且我看到了一些变通方法,例如 VStack 变通方法(但即使它有很多缺陷,左侧选项卡也是如此离左边太远,右边的标签离右边太远,当切换标签时,只有第一个最初加载的标签,另一个标签保持空白,使用标签没有帮助)。那么我如何拥有两个加载 View 并具有图像和文本的选项卡呢?

最佳答案

对于 XCode beta 3,以下应该可以工作:

import SwiftUI

struct Home : View {
    @State private var currentTab = 1

    var body: some View {
        TabbedView(selection: $currentTab) {
            FirstView()
                .tabItem {
                    VStack {
                        Image(systemName: "1.circle")
                        Text("First Tab")
                    }
                }.tag(1)
            SecondView()
                .tabItem {
                    VStack {
                        Image(systemName: "2.circle")
                        Text("Second Tab")
                    }
                }.tag(2)
        }
    }
}

不过,在 VStack 中包含选项卡标签似乎是可选的。因此,您可能决定放弃它,例如:

import SwiftUI

struct Home : View {
    @State private var currentTab = 1

    var body: some View {
        TabbedView(selection: $currentTab) {
            FirstView()
                .tabItem {
                    Image(systemName: "1.circle")
                    Text("First Tab")
                }.tag(1)
            SecondView()
                .tabItem {
                    Image(systemName: "2.circle")
                    Text("Second Tab")
                }.tag(2)
        }
    }
}

关于ios - 如何在 SwiftUI 中使用 TabbedView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56748132/

相关文章:

ios - 我正在检索联系人的多个地址,但只需要家庭住址

ios - 在 swift 3 中下载文件最多只能完成 24 kb?使用 URLSession

swift - SearchController 不显示程序化的 collectionView 单元格

ios - 从 Objective C 代码调用 @escaping 完成处理程序时出现 EXC_BAD_ACCESS 错误

iOS上传直播

swift - 如何将接收器结果分配给变量

ios - 应用 CIFilter 时图像变得模糊

ios - 如何在 ios 模拟器上模仿双指滚动/拖动手势?

SwiftUI iOS14 - NavigationView + List - 不会填充空间

ios - 如何在 SwiftUI 中显示键盘时显示完整列表