当前位置: 首页 > 面试题库 >

SwiftUI-出现工作表后,无法单击导航栏按钮

简学文
2023-03-14
问题内容

我几周前才开始使用SwiftUI,正在学习。今天,我遇到了一个问题。

当我显示一个带有navigationBarItems-
button的工作表,然后关闭ModalView并返回到ContentView时,我发现自己无法再次单击navigationBarItems-button。

我的代码如下:

struct ContentView: View {

    @State var showSheet = false

    var body: some View {
        NavigationView {
            VStack {
                Text("Test")
            }.sheet(isPresented: self.$showSheet) {
                ModalView()
            }.navigationBarItems(trailing:
                Button(action: {
                    self.showSheet = true
                }) {
                    Text("SecondView")
                }
            )
        }
    }
}

struct ModalView: View {

    @Environment(\.presentationMode) var presentation

    var body: some View {
        VStack {
            Button(action: {
                self.presentation.wrappedValue.dismiss()
            }) {
                Text("Dismiss")
            }
        }
    }
}

问题答案:

我认为发生这种情况是因为presentationMode不是从演示者视图继承的,所以演示者不知道该模式已经关闭。您可以通过添加presentationMode到演示者(在本例中为ContentView)来解决此问题。

struct ContentView: View {

    @Environment(\.presentationMode) var presentation
    @State var showSheet = false

    var body: some View {
        NavigationView {
            VStack {
                Text("Test")
            }.sheet(isPresented: self.$showSheet) {
                ModalView()
            }.navigationBarItems(trailing:
                Button(action: {
                    self.showSheet = true
                }) {
                    Text("SecondView")
                }
            )
        }
    }
}

在Xcode 11.4上测试



 类似资料:
  • 问题内容: 我在Java中的框架上附加了一个侦听器,当我按任意键时都可以检测到按键,但是发生了一件奇怪的事。我的游戏是扫雷游戏,我有一个重新启动按钮,基本上可以清除木板并消除它。奇怪的是,当我用鼠标单击按钮时,一切都可以很好地清除,并且板子仍然保留,但键侦听器停止工作。即使是陌生人,我也有一个jmenuitem,它基本上会自动单击按钮。所以就像restartbutton.doclick() 如果我

  • 我正在开发一个android项目,我正在尝试使用来自http://developer.android.com/training/implementing-navigation/nav-drawer.html.的示例集成新的导航抽屉 它主要工作除了一件事,动作栏向上按钮不显示菜单,但如果我用手指从边缘滑动主活动屏幕,菜单就会出现,所以我知道实际菜单没有问题,它只是动作栏按钮。 下面是代码 感谢您提供

  • 本文向大家介绍Bootstrap导航栏各元素操作方法(表单、按钮、文本),包括了Bootstrap导航栏各元素操作方法(表单、按钮、文本)的使用技巧和注意事项,需要的朋友参考一下 本文主要包括三大方面,大家仔细学习。 1、导航栏中的表单 导航栏中的表单不是使用 Bootstrap 表单 章节中所讲到的默认的 class,它是使用 .navbar-form class。这确保了表单适当的垂直对齐和在

  • 我已经实现了最新的appcompat库,并使用工具栏作为操作栏。但问题是我无法捕捉主页按钮/汉堡包图标点击事件。我试过了,看了所有的东西,但似乎没有发现类似的问题。 这是我的类: 这是我的NavigationDrawerFrament类: 当我单击菜单项时,会调用日志“item selected”。但当我点击home按钮时,它会打开导航抽屉,但从未调用“home selected”日志。我也在我的

  • 以下是我的所有主要脚本标记:

  • 6.4 ABP表现层 - 导航栏 每一个WEB应用程序都有导航菜单,Abp也为用户提供了通用的创建和显示菜单方式。 6.4.1 创建菜单 一个应用程序可能包含不同的模块,而每个模块都可能有它自己的菜单项。在Abp中,需要创建一个派生自NavigationProvider的类来定义一个菜单项。 假设我们有一个这样的主菜单: Tasks Reports Administration 1 User Ma