SwiftUI 弹出框在 NavigationView 中时消失

Posted

技术标签:

【中文标题】SwiftUI 弹出框在 NavigationView 中时消失【英文标题】:SwiftUI Popover Disappears When It's Inside a NavigationView 【发布时间】:2020-10-01 23:53:23 【问题描述】:

我在 NavigationView 中有一个弹出框:

import SwiftUI

struct ContentView: View 
  var body: some View 
    NavigationView 
      NavigationLink(destination: ChildView()) 
        Text("Navigate")
      
    
    .navigationViewStyle(StackNavigationViewStyle())
  


struct ChildView: View 
  @State private var popover = false

  var body: some View 
    HStack 
      Button(action:  self.popover = true ) 
        Text("Toggle")
      
      .popover(isPresented: $popover) 
        Text("Yolo")
      
    
  

当您在启动应用程序后第一次切换弹出框时,它会立即消失。之后它可以正常工作。这是 NavigationView 中的错误吗?有什么解决方法吗?

【问题讨论】:

Xcode 12 / ios 14 无法重现。 我也在 Xcode 12 / iOS 14 上,也许它只在 iPad 上。 【参考方案1】:

改用工作表:

struct ContentView: View 
    var body: some View 
        NavigationView 
            NavigationLink(
                destination: ChildView()
            ) 
                Text("Navigate")
            
        
    


struct ChildView: View 
    @State
    private var isPresented = false
    var body: some View 
        HStack 
            Button(
                action: 
                    isPresented.toggle()
                ) 
                Text("Present")
            
        
        .sheet(
            isPresented: $isPresented
        ) 
            Text("Yolo")
        
    

【讨论】:

以上是关于SwiftUI 弹出框在 NavigationView 中时消失的主要内容,如果未能解决你的问题,请参考以下文章

弹出框在状态栏中时的 NSPopover 瞬态

为啥故事板弹出框在 Swift 中的设备上不起作用?

Bootstrap 3 弹出框在“响应”模式下不起作用

弹出框在 IPAD 模拟器中透明但在设备中不透明

弹出框在 ForEach 中显示不准确的信息

element-ui 弹出框在遮罩层下面