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 构建的应用程序生成设备令牌
Swift UI Canvas 未在 macOS 10.15 和 Xcode 11.1 中显示
requestAuthorizationToShareTypes 方法未在 iOS 8 Xcode 6 中显示权限提示