无法将“MenuView”类型的值分配给“some View”类型

Riv*_*era 4 swift swiftui

我注意到.popoverSwiftUI 中只能有一个修饰符。我必须呈现两种可能的简单弹出窗口,其中一个是 a MenuView,另一个是CreateChannelView.

为此我有:

@State private var popover: some View
@State private var showPopover = false
Run Code Online (Sandbox Code Playgroud)

然后是修饰符:

.popover(isPresented: self.$showPopover) {
    self.popover
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我收到错误时,我不知道如何分配MenuViewCreateChannelView的实例:popover

无法将“MenuView”类型的值分配给“some View”类型

这与在方法中传递通用视图的问题有点不同init

Riv*_*era 8

解决方案是使用AnyView

@State private var popover: AnyView
Run Code Online (Sandbox Code Playgroud)

那么它可以被赋值为:

self.popover = AnyView(CreateChannelView(showing: self.$showPopover))
Run Code Online (Sandbox Code Playgroud)