如何在 SwiftUI 中更新文本标签?
Posted
技术标签:
【中文标题】如何在 SwiftUI 中更新文本标签?【英文标题】:How do I update a text label in SwiftUI? 【发布时间】:2020-03-18 16:50:10 【问题描述】:我有一个 SwiftUI 文本标签,我想在按下按钮后在其中写一些东西。
这是我的代码:
Button(action:
registerRequest() // here is where the variable message changes its value
)
Text("SignUp")
Text(message) // this is the label that I want to change
我该怎么做?
【问题讨论】:
请不要加回xcode
标签,因为它与您的问题无关。该标签仅应用于专门针对 Xcode IDE 的问题。您的问题纯粹是关于 Swift 和 SwiftUI。
好的!谢谢!我不知道!
【参考方案1】:
仅使用您共享的代码,很难确切说明您应该如何做,但这里有几个好方法:
第一种方法是将字符串放入@State
变量中,这样它就可以被变异,并且对它的任何更改都会导致视图更新。以下是您可以使用实时预览进行测试的示例:
import SwiftUI
struct UpdateTextView: View
@State var textToUpdate = "Update me!"
var body: some View
VStack
Button(action:
self.textToUpdate = "I've been udpated!"
)
Text("SignUp")
Text(textToUpdate)
struct UpdateTextView_Previews: PreviewProvider
static var previews: some View
UpdateTextView()
如果您的字符串存储在视图外部的类中,您可以使用在您的类上实现ObservableObject
协议并将字符串变量设为@Published
,以便对其进行任何更改都会导致视图更新.在视图中,您需要将您的类变量设置为 @ObservedObject
才能完成全部连接。以下是您可以在实时预览中使用的示例:
import SwiftUI
class ExternalModel: ObservableObject
@Published var textToUpdate: String = "Update me!"
func registerRequest()
// other functionality
textToUpdate = "I've been updated!"
struct UpdateTextViewExternal: View
@ObservedObject var viewModel: ExternalModel
var body: some View
VStack
Button(action:
self.viewModel.registerRequest()
)
Text("SignUp")
Text(self.viewModel.textToUpdate)
struct UpdateTextViewExternal_Previews: PreviewProvider
static var previews: some View
UpdateTextViewExternal(viewModel: ExternalModel())
【讨论】:
我对@State 变量一无所知,这就是问题所在。谢谢!以上是关于如何在 SwiftUI 中更新文本标签?的主要内容,如果未能解决你的问题,请参考以下文章