Ios SwiftUI:轻触导航栏按钮的目标,该按钮在取消工作表后未对齐
我注意到在使用iOS 13.3.1及更早版本的SwiftUI中出现了一种相当奇怪、可能有bug的行为。为了演示这个非常简单的场景: 完整示例代码:Ios SwiftUI:轻触导航栏按钮的目标,该按钮在取消工作表后未对齐,ios,swift,swiftui,Ios,Swift,Swiftui,我注意到在使用iOS 13.3.1及更早版本的SwiftUI中出现了一种相当奇怪、可能有bug的行为。为了演示这个非常简单的场景: 完整示例代码: import SwiftUI struct ContentView: View { @State var showingSheet: Bool = false var body: some View { NavigationView { Text("ParentView")
import SwiftUI
struct ContentView: View {
@State var showingSheet: Bool = false
var body: some View {
NavigationView {
Text("ParentView")
.navigationBarItems(trailing: Button(action: { self.showingSheet = true }) { Text("Show") })
}.sheet(isPresented: $showingSheet) { SheetView() }
}
}
struct SheetView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Sheet content")
Button(action: { self.presentationMode.wrappedValue.dismiss() }) { Text("Hide") }
}
}
}
复制:
import SwiftUI
struct ContentView: View {
@State var showingSheet: Bool = false
var body: some View {
NavigationView {
Text("ParentView")
.navigationBarItems(trailing: Button(action: { self.showingSheet = true }) { Text("Show") })
}.sheet(isPresented: $showingSheet) { SheetView() }
}
}
struct SheetView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Sheet content")
Button(action: { self.presentationMode.wrappedValue.dismiss() }) { Text("Hide") }
}
}
}
import SwiftUI
struct ContentView: View {
@State var showingSheet: Bool = false
var body: some View {
NavigationView {
Text("ParentView")
.navigationBarItems(trailing: Button(action: { self.showingSheet = true }) { Text("Show") })
}.sheet(isPresented: $showingSheet) { SheetView() }
}
}
struct SheetView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Sheet content")
Button(action: { self.presentationMode.wrappedValue.dismiss() }) { Text("Hide") }
}
}
}
- 通过将工作表拖动到屏幕底部来关闭工作表时,不会发生这种情况
- 只有在为宿主视图激活了大型导航项标题时才会发生这种情况,使用内联标题也可以
所以现在我在这里想:我是犯了一个错误,还是这是一个真正的SwiftUI错误?如果是,是否有一个简单的解决方法?我搜索了类似的问题,但没有发现任何相同的问题 编辑:在此期间,我将此作为雷达反馈FB7560960提交给苹果公司
编辑2:仍然发生在13.4.1中。我不知道为什么,但添加了
@Environment(\.presentationMode)var presentationMode
使用
contentView
似乎可以解决这个问题。的确如此!这似乎会在取消模式时触发ContentView的重新呈现,并在修复过程中修复错误。在我看来,与其说是一个解决方案,不如说是一个变通办法,但确实奏效了!谢谢你。这对我似乎不起作用。对于contentView
您是指contentView
?创建作为应用程序初始视图的新SwiftUI项目时生成的结构?