SwiftUI:模态解雇后,NavigationBar中的按钮将不会触发

问题描述 投票:0回答:1

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

我在NavigationBar中有一个Add按钮,它会弹出一个模态。模态具有一个将其关闭的按钮,该按钮起作用。但是,直到我与屏幕上的其他内容(例如,滚动下面的列表)交互之后,我才能再次与NavigationBar中的“添加”按钮进行交互。

我还在列表本身中放置了另一个用于踢的添加按钮,该按钮始终有效。

这是主视图的代码:

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父视图稍微偏移了一点,就像这样:

enter image description here

一旦我上下拖动列表,UI调试器将显示与第一个图像相同的视图层次。

有人知道这里发生了什么吗?

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

谢谢!

我遇到了一些怪异的行为,试图在解散后弹出一个简单的模式。我在NavigationBar中有一个添加按钮,用于弹出模式信息。模态中有一个按钮,将......>

ios swift swiftui
1个回答
0
投票

这确实是一个错误。有趣的是,在“拖动以消除”之后未发现该问题,因此它是一种“同步/异步”状态更改或其他类似的东西。

解决方法

© www.soinside.com 2019 - 2024. All rights reserved.