EmptyView 未在 iOS 15、Xcode 13 中显示

Posted

技术标签:

【中文标题】EmptyView 未在 iOS 15、Xcode 13 中显示【英文标题】:EmptyView is not showing in iOS 15, Xcode 13 【发布时间】:2021-09-28 01:43:25 【问题描述】:

我有严重的问题。我的 Xcode 版本是 13,ios 版本是 15。

import SwiftUI

struct ContentView: View 
  @State var isGo: Bool = false

  var body: some View 
    ZStack 
      Button(action: 
        self.isGo = true
      , label: 
        Text("Go EmptyView")
      )

      EmptyView()
        .background(Color.green)
        .frame(width: 100, height: 100)
        .sheet(isPresented: $isGo, onDismiss: nil, content: 
          PopupView()
        )
    
  


struct PopupView: View 
    var body: some View 
        Rectangle()
            .fill(Color.green)
    

以上代码不工作。但是,以前的 Xcode 版本或以前的 iOS 版本是该代码正在运行。这是iOS的错误吗?有什么解决办法吗?

【问题讨论】:

你有这样使用EmptyView的原因吗?例如,既然您已经设置了背景,为什么不使用Color.green 您的代码将永远无法工作!即使使用 iOS 13.0 或 14.0 也是不可能的! EmptyView 对 SwiftUI 毫无意义!这就像将零乘以一百万!结果会怎样? 不,它适用于 iOS 13、14。我的项目使用了太多的 Empty View。我不能改变另一个...... 我也遇到同样的空视图问题如果你能解决它请提供解决方案,在我的代码中我使用空视图来呈现全屏,因为有多个条件所以空视图需要我们直接无法使用 .overfullscreen 下面提供了答案,希望能解决问题。 【参考方案1】:

你很亲密,不知道为什么没有人提供帮助。您的代码确实有效,但理论上不正确,您需要将您调用 .sheet 的位置移到您的 ZStack 之外并且它有效。但这里有一个更好的方法,没有所有无用的代码。

struct ContentView: View 
    @State var showemptyview: Bool = false
    
    var body: some View 
        Button("Go EmptyView") 
            showemptyview.toggle()
        
        .sheet(isPresented: $showemptyview) 
            EmptyView()
                .background(Color.green)
        
    

【讨论】:

通常您需要多个 EmptyViews 用于不同的工作表。如果您要添加另一张,则您的案例仅适用于一张纸,但它不起作用。现在,从 iOS 15 和新版本开始,您可以将多张工作表应用到一个视图。终于!【参考方案2】:

最后,在最后一个版本中,您可以直接将多张工作表用于主视图,并且可以正常工作。您不需要使用工作表创建单独的 EmptyView()

YourMainView()
  .sheet(item: $viewModel)  item in
    // some logic here 
  
  .sheet(isPresented: $onther_viewModel.showView, content: 
    SomeAnotherView(viewModel: viewModel.getVM())
  )
  .sheet(isPresented: $onther_viewModel2.showView, content: 
    SomeView(viewModel: viewModel.getVM())
  )

【讨论】:

这在 ios14 上不起作用【参考方案3】:

用“Spacer().frame(height:0)”替换“EmptyView()”在 iOS15 和 iOS14 上对我有用

【讨论】:

您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。

以上是关于EmptyView 未在 iOS 15、Xcode 13 中显示的主要内容,如果未能解决你的问题,请参考以下文章

未在 iOS 10 上为基于 XCode 7.3 构建的应用程序生成设备令牌

应用程序未在 Xcode 4.2 中的设备上运行

Swift UI Canvas 未在 macOS 10.15 和 Xcode 11.1 中显示

requestAuthorizationToShareTypes 方法未在 iOS 8 Xcode 6 中显示权限提示

requestAuthorizationToShareTypes 方法未在 iOS 8 Xcode 6 中显示权限提示

UIWindow 及其内容未在 Xcode 11 iOS 13 中显示。出现黑屏