ios - SwiftUI:模式关闭后导航栏中的按钮不会触发

标签 ios swift swiftui

我遇到了一些奇怪的行为,试图在它被解雇后弹出一个简单的模式。

我在 NavigationBar 中有一个弹出模态的添加按钮。模态有一个按钮可以关闭它,它可以工作。但是,在与屏幕上的其他内容(例如滚动下面的列表)进行交互之前,我无法再次与 NavigationBar 中的“添加”按钮进行交互。

我还在列表本身中放置了另一个添加按钮,只是为了踢球,它总是有效。

这是主 View 的代码:

import SwiftUI

struct ContentView: View {
  @State var displayModal: Bool = false

  var body: some View {
    NavigationView {
      List {
        Text("Hello again.")
          Button(action: { self.displayModal = true }) {
            Text("Add")
          }
      }
      .sheet(isPresented: $displayModal) {
        Modal(isPresented: self.$displayModal)
      }
      .navigationBarTitle("The Title")
      .navigationBarItems(trailing: Button(action: { self.displayModal = true }) {
        Text("Add")
      })
    }
  }
}

和模态,为了完整性:
import SwiftUI

struct Modal: View {
  @Binding var isPresented: Bool

  var body: some View {
    VStack {
      HStack {
        Button(action: {
          self.isPresented = false
        }) {
          Text("Cancel")
        }
        .padding()
        Spacer()
      }
      Text("I am the modal")
      Spacer()
    }
  }
}

我能想到的唯一一件事是有什么不可见的东西阻止了我使用 NavigationBar 按钮。所以我启动了 UI 调试器,这就是 ContentView 的样子。请注意 NavigationBar 按钮。

enter image description here

现在,在我点击按钮并显示模态后,然后使用 UI 调试器再次查看 ContentView,所有相同的元素都已就位,但 Button 父 View 有点偏移,如下所示:

enter image description here

一旦我上下拖动列表,UI 调试器就会显示与第一张图像相同的 View 层次结构。

有谁知道这里发生了什么?

我在 iPhone 11 Pro 模拟器上使用 Xcode 11.2.1 和 iOS 13,但也在我的 iPhone 上观察到这一点。

谢谢!

最佳答案

这真的是一个错误。有趣的是,在“拖动以关闭”之后没有观察到问题,所以它是一种“同步/异步”状态改变或其他东西。

解决方法 (corse的临时,几乎完全降低能见度)

  .navigationBarItems(trailing: Button(action: { self.displayModal = true }) {
    Text("Add").padding([.leading, .vertical], 4)
  })

关于ios - SwiftUI:模式关闭后导航栏中的按钮不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910255/

相关文章:

objective-c - UITableView 使用 Storyboard 深入了解 UITableView 的详细信息

swift - 如何在 TableView 中使用prepareForSegue 传递数据?

ios - 让 actionSheet 打开新 View (SwiftUI) 时出现问题

ios - 如何处理 AVCaptureVideoPreviewLayer 的设备旋转?

ios - 如何使 3D Touch Quick Action 与 UITabBar 一起使用?

ios - 如何使用 Twitter 工具包/Fabric iOS 获取登录用户的个人资料 URL

ios - 什么时候检查用户是否登录?

ios - 如何使用递归遍历大纲中的所有 child ?

ios - swift3 如何在应用程序更改为后台状态时更改屏幕

swift - 我应该如何理解 SwiftUI 中的 NavigationView 声明代码