我正在尝试创建一个类似于视图的容器以显示加载程序或绘制背景。
import SwiftUI
struct BaseView<Content: View> : View {
@State var displayLoader = false
var content: () -> Content
var body: some View {
GeometryReader { geometry in
ZStack {
Image("")
.resizable()
.aspectRatio(geometry.size, contentMode: .fill)
.edgesIgnoringSafeArea(.all)
.background(LinearGradient(gradient: Gradient(colors: [.colorDarkGray, .colorGray]), startPoint: .top, endPoint: .bottom))
LoadingView(isShowing: .constant(self.displayLoader)) {
self.content() // here i want to send parameter to inner view.
}
}
}
}
}
这是我创建的内部视图之一
struct LoginOptionsView: View {
var body: some View {
BaseView {
VStack(){
VStack() {
Button(action: {
//HERE I WANT TO DISPLAY LOADER FROM PARENT VIEW like to set displayLoader to true.
}) {
Text("LOG IN").foregroundColor(Color.white)
}
.frame(minWidth: 0, idealWidth: .infinity, maxWidth: 0, minHeight: 50, idealHeight: 50, maxHeight: .none, alignment: .center)
.background(Color.colorPink)
.cornerRadius(25, antialiased: true)
}
}
}
}
我尝试绑定,可观察对象等,但是我无法向self.content发送一个参数,它是displayLoader。 有没有很简单的方法?
答案 0 :(得分:0)
如果要在父视图中获取更新的值,则不应使用constant
绑定。
// self.$displayLoader gives you the binding you want
LoadingView(isShowing: self.$displayLoader) {
self.content() // here i want to send parameter to inner view.
}
您现在可以将displayLoader
作为绑定发送到LoginOptionsView
并更改值。