Xcode 如何访问结构&x27;SwiftUI中该结构内的类中的s变量?
如何从结构中的类中的函数访问@State变量。伪代码如下所示:Xcode 如何访问结构&x27;SwiftUI中该结构内的类中的s变量?,xcode,swiftui,Xcode,Swiftui,如何从结构中的类中的函数访问@State变量。伪代码如下所示: struct StructName: UIViewRepresentable { @State var variableName = value class className: NSObject { func functionName(parameters) { //How do I access variableName from here? } }
struct StructName: UIViewRepresentable {
@State var variableName = value
class className: NSObject {
func functionName(parameters) {
//How do I access variableName from here?
}
}
}
使用
@Binding
,并将其作为init上的参数传递:
struct StructName: UIViewRepresentable {
@Binding var variableName: Bool
func makeUIView(context: Context) -> UIView {
return UIView()
}
func updateUIView(_ uiView: UIView, context: Context) {
}
func makeCoordinator() -> Coordinator {
Coordinator(variableName: self.$variableName)
}
class Coordinator: NSObject {
@Binding var variableName: Bool
init(variableName: Binding<Bool>) {
_variableName = variableName
}
func functionName() {
//access variableName here
}
}
}
structStructName:UIViewRepresentable{
@绑定变量variableName:Bool
func makeUIView(上下文:context)->UIView{
返回UIView()
}
func updateUIView(uiView:uiView,context:context){
}
func makeCoordinator()->Coordinator{
协调员(variableName:self.$variableName)
}
类协调器:NSObject{
@绑定变量variableName:Bool
init(variableName:Binding){
_variableName=variableName
}
func functionName(){
//在此处访问变量名称
}
}
}
使用@Binding
,并将其作为init上的参数传递:
struct StructName: UIViewRepresentable {
@Binding var variableName: Bool
func makeUIView(context: Context) -> UIView {
return UIView()
}
func updateUIView(_ uiView: UIView, context: Context) {
}
func makeCoordinator() -> Coordinator {
Coordinator(variableName: self.$variableName)
}
class Coordinator: NSObject {
@Binding var variableName: Bool
init(variableName: Binding<Bool>) {
_variableName = variableName
}
func functionName() {
//access variableName here
}
}
}
structStructName:UIViewRepresentable{
@绑定变量variableName:Bool
func makeUIView(上下文:context)->UIView{
返回UIView()
}
func updateUIView(uiView:uiView,context:context){
}
func makeCoordinator()->Coordinator{
协调员(variableName:self.$variableName)
}
类协调器:NSObject{
@绑定变量variableName:Bool
init(variableName:Binding){
_variableName=variableName
}
func functionName(){
//在此处访问变量名称
}
}
}
这里是可能的方法。具体类型用于演示目的
struct StructName: UIViewRepresentable {
@State var variableName: Bool = false
class ClassName: NSObject {
let boundVariable: Binding<Bool>
init(variableName: Binding<Bool>) {
self.boundVariable = variableName
}
func functionName(parameters: [String]) {
boundVariable.wrappedValue = true
}
}
// somewhere in place of ClassName instantiation below use
// ClassName(boundVariable: $variableName)
}
structStructName:UIViewRepresentable{
@状态变量variableName:Bool=false
类名:NSObject{
让boundVariable:绑定
init(variableName:Binding){
self.boundVariable=variableName
}
func函数名(参数:[字符串]){
boundVariable.wrappedValue=true
}
}
//在下面使用类名称实例化的地方
//类名(boundVariable:$variableName)
}
这里是可能的方法。具体类型用于演示目的
struct StructName: UIViewRepresentable {
@State var variableName: Bool = false
class ClassName: NSObject {
let boundVariable: Binding<Bool>
init(variableName: Binding<Bool>) {
self.boundVariable = variableName
}
func functionName(parameters: [String]) {
boundVariable.wrappedValue = true
}
}
// somewhere in place of ClassName instantiation below use
// ClassName(boundVariable: $variableName)
}
structStructName:UIViewRepresentable{
@状态变量variableName:Bool=false
类名:NSObject{
让boundVariable:绑定
init(variableName:Binding){
self.boundVariable=variableName
}
func函数名(参数:[字符串]){
boundVariable.wrappedValue=true
}
}
//在下面使用类名称实例化的地方
//类名(boundVariable:$variableName)
}
我在第一次定义绑定变量(在结构内部,而不是在类内部)的那一行上有一个错误。该行中给出的错误是“参数标签”(wrappedValue:)”与任何可用重载都不匹配。我将类型设置为Bool,将值设置为false。第二个绑定变量上没有错误(我不确定是将变量类型保留为“String”还是将其更改为“Bool”(两种方式都有效).然后下一个错误出现在我设置_varName=varName的行上。它说“无法将“String”类型的值分配给“Binding”类型。想法?很抱歉,我将用一个工作示例更新答案。谢谢,它非常接近工作状态!当我将映射初始化为ContentView时,我给variableName的参数是什么?即,当我编写MapView(variableName:value)时在ContentView中,我应该写什么来代替值?我收到的错误表明它需要一个类型为Binding的值,但我不确定要输入什么?值必须是另一个@Binding
变量或一个@State
。如果选择第二个选项,则必须在MapView实例化之前加上一个$
。`MapView(variableName:$contentViewStateVar)。我在第一次定义绑定变量的那一行(在结构内部,而不是在类内部)有一个错误。那一行给出的错误是“参数标签”(wrappedValue:)'与任何可用的重载都不匹配。我将Type设置为Bool,value设置为false。第二个绑定变量没有错误(我不确定是将变量类型保留为'String'还是将其更改为'Bool'(无论哪种方式都有效)。然后下一个错误出现在我设置_varName=varName的行上。它显示'无法将“String”类型的值分配给“Binding”类型。想法?很抱歉,我将用一个工作示例更新答案。谢谢,它非常接近工作状态!当我将映射初始化为ContentView时,我给variableName的参数是什么?即,当我编写MapView(variableName:value)时在ContentView中,我应该写什么来代替值?我收到的错误表明它需要一个类型为Binding的值,但我不确定要输入什么?值必须是另一个@Binding
变量或一个@State
。如果选择第二个选项,则必须在MapView实例化之前加上一个$
。`MapView(variableName:$contentViewStateVar)。