SwiftUI选项卡视图显示表

牛津212:

我是SwiftUI的新手,我尝试构建一个选项卡栏,其中包含一个将返回模式(工作表)但不返回视图的选项卡。经过尝试,我发现有时它可以工作,但有时却不行。我想在用户取消模式后将上一个选项卡式项目作为选定选项卡。但是我找不到什么错误。有人向我解释我的代码有什么问题吗?

import SwiftUI
struct ContentView: View {
    @State var isPresenting = false
    @State private var selectedItem = 1
    @State private var oldSelectedItem = 1


    var body: some View {
        TabView(selection: $selectedItem){
            Text("1")
                .tabItem {
                        Image(systemName: "house")
                }.tag(1)
            .onAppear {
                self.oldSelectedItem = self.selectedItem
            }

            Text("")    // I want this to display the sheet.
                .tabItem { Image(systemName: "plus.circle") }
                .tag(2)
            .onAppear {
                self.isPresenting = true
                self.selectedItem = self.oldSelectedItem

            }

            Text("3")
                .tabItem {
                    Image(systemName: "calendar")
                }.tag(3)
            .onAppear {
                self.oldSelectedItem = self.selectedItem
            }
        }
        .sheet(isPresented: $isPresenting) {
            testSheet
        }
        .accentColor(Color.orange)

    
    }
    var testSheet : some View {
        VStack{
            Text("testing")
        }
    }
}

我假设您想要这样做(已通过Xcode 12 / iOS 14测试)

struct ContentView: View {
    @State var isPresenting = false
    @State private var selectedItem = 1
    @State private var oldSelectedItem = 1


    var body: some View {
        TabView(selection: $selectedItem){
            Text("1")
                .tabItem {
                        Image(systemName: "house")
                }.tag(1)

            Text("")    // I want this to display the sheet.
                .tabItem { Image(systemName: "plus.circle") }
                .tag(2)

            Text("3")
                .tabItem {
                    Image(systemName: "calendar")
                }.tag(3)
        }
     //   .onReceive(Just(selectedItem))  // SwiftUI 1.0 - import Combine for this
        .onChange(of: selectedItem) {    // SwiftUI 2.0 track changes
                if 2 == selectedItem {
                self.isPresenting = true
                } else {
                    self.oldSelectedItem = $0
                }
            }
        .sheet(isPresented: $isPresenting, onDismiss: {
                self.selectedItem = self.oldSelectedItem
            }) {
            testSheet
        }
        .accentColor(Color.orange)


    }
    var testSheet : some View {
        VStack{
            Text("testing")
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SwiftUI TabView,跨多个选项卡共享内容视图

选项卡更改时清除视图数据SwiftUI

限制页面选项卡视图Swiftui中的点数

离子:选项卡视图不显示后退按钮

Bootstrap选项卡视图内容未显示

在选项卡栏控制器之前显示视图

工作表公式以显示选项卡是否隐藏

从子导航视图中关闭选项卡视图并返回到 RootView SwiftUI

如何在SwiftUI中创建从登录视图到选项卡视图之间的过渡?

tablesorter(mottie fork)/ bootstrap选项卡=>如果重新加载其他活动选项卡,则不会显示选项卡上的表

数据挖掘选项未显示在 Oracle 11g 的视图选项卡中

如何在SwiftUI中的所有选项卡视图之间共享状态

Swiftui TabBar:轻击当前选定选项卡的TabItem以重置视图的操作

如何在swiftUI中使用分页选项卡视图时阻止页面上下滚动

swiftUI中选项卡栏的圆角?

Swiftui中的选项卡项目间距

动态添加新的选项卡视图

列表视图和选项卡

离子:选项卡视图未呈现

多选项卡/页面视图混乱

MVC选项卡和局部视图

在片段上创建选项卡视图

Eclipse:配置选项卡视图

ExtJS选项卡面板-选项卡不显示

使用SwiftUI的TabbedView查看切换到其他选项卡时未显示的内容

如何为同一选项卡栏项目显示不同的视图页面?

选项卡视图中的文本字段将在键盘上显示空格

如何在iOS中使用导航栏隐藏/显示视图的选项卡栏?

视图分页器错误,在所有选项卡中显示相同的数据?