【发布时间】:2020-01-12 16:05:46
【问题描述】:
我想在 SwiftUI 中显示一个具有可变字符串内容的文本(视图)。
@State var myvar : String = "Undefined"
var body: some view {
Text("Content: \(myvar)")
}
func abc() {
self.myvar = "Defined"
}
每当我调用 abc() 函数时,myvar 的值都不会更新。我已经使用 abc() 中的 debugPrint(self.myvar) 检查了这一点。
这段代码在我的 ContentView.swift 中,而我在委托回调方法中从 HostingController.swift 调用 contentView.abc()。
是否有一种解决方案可以为 SwiftUI 中的这种“外部”使用创建可变/可变字符串?
编辑:
来自 HostingController:
override var body: ContentView {
let contentView = ContentView().environmentObject(contentModel)
...
return contentView
最后一行给出错误“无法将某些视图类型的返回表达式转换为返回类型内容视图”。 需要注意的是,我在 WatchKit 环境中工作,所以这是一个 Apple Watch 应用程序。
【问题讨论】:
-
它应该可以工作,而且确实可以。你能说明你是怎么称呼
abc()的吗? (我觉得原因就在其中) -
@Asperi 感谢您的回复!这段代码在我的 ContentView.swift 中,而我在委托回调方法中从 HostingController.swift 调用 contentView.abc()。
-
就是这样 - 您只能在 View 本身内更改
@State。 -
那我该怎么做呢,@Asperi?我想从 HostingController 更改它,因为该类包含调用 abc() 的逻辑。有什么想法吗?
-
是的,看答案。