我有两个可重用的视图,Ex1和Ex2。我试图证明其中一个交替地取决于条件,但我做不到。
ContentvIew:
struct ContentView: View {
@State var selector = false
var cvc = ContentViewController()
var body: some View {
ZStack { // ERROR: Protocol type 'Any' cannot conform to 'View' because only concrete types can conform to protocols
cvc.getView(t: selector)
Button(action: {
self.selector.toggle()
print(self.selector)
}) {
Text("Button")
}
}
}
}
Ex1:
import SwiftUI
struct Ex1: View {
var body: some View {
Text("Ex 1")
}
}
Ex2:
import SwiftUI
struct Ex2: View {
var body: some View {
Text("Ex 2")
}
}
ContentViewController:
import Foundation
class ContentViewController {
let a = Ex1()
let b = Ex2()
func getView (t: Bool) ->(Any){
if t {
return a
}
else {
return b
}
}
}
我认为这很简单,但对我而言暂时不行。请帮两件事。
我想了解这个问题以及解决方法。
在布局中交替显示两个视图的最佳方法。
谢谢。
答案 0 :(得分:0)
由于错误提示ContentViewController
的{{1}}方法中指定的返回类型不符合协议。
在SwiftUI中,如果您不知道运行时可用的视图类型,则在getView
子句中指定的所有内容都必须为body{}
类型。
您可以为未知视图指定View
类型。
因此,通过更改AnyView
的代码将消除您的错误。
ContentViewController