如何将视图输入参数传递给 @State 变量?

Posted

技术标签:

【中文标题】如何将视图输入参数传递给 @State 变量?【英文标题】:How Do You Pass A View Input Argument To @State Variable? 【发布时间】:2020-12-17 21:52:31 【问题描述】:

我有一个基本的 SwiftUI 问题 - 我有一个需要参数的视图,在我的例子中是“symbolName”,我想获取价格。我有一个执行此操作的类函数,但将视图参数作为参数传递给 FetchPrice 不起作用。当我使用固定字符串(例如“GE”)时,它可以工作。我确信有正确的方法可以做到这一点,感谢任何提示和提示!

错误:

不能在属性初始化器中使用实例成员“symbolNameV”; 属性初始化器在“self”可用之前运行

import SwiftUI

struct SymbolRow2: View 
    var symbolNameV: String

    @ObservedObject var fetchPrice = FetchPrice(symbolName:symbolNameV)

...

【问题讨论】:

【参考方案1】:

属性初始化程序在 'self' 可用之前运行

通过调用

FetchPrice(symbolName: symbolNameV)

您正在访问self。上面的代码其实是:

FetchPrice(symbolName: self.symbolNameV)

要解决这个问题,您可以创建一个自定义init

struct SymbolRow2: View 
    private var symbolNameV: String
    @ObservedObject private var fetchPrice: FetchPrice
    
    init(symbolNameV: String) 
        self.symbolNameV = symbolNameV
        self.fetchPrice = FetchPrice(symbolName: symbolNameV)
    

    ...

【讨论】:

以上是关于如何将视图输入参数传递给 @State 变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 nginx 将路径参数传递给 lua 代码?

如何将参数传递给配置单元视图,以便视图根据传递的内容进行更改?

将状态作为参数传递给环处理程序?

如何将参数传递给Django中模板变量的方法?

在 React 中,如何将“this.state”作为参数传递给“socket.on”回调函数?

如何将参数传递给 Express JS 中的中间件函数?