Sus*_*dan 12 ios swift swiftui
我有一个 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
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
Hel*_*lam 22
仅使用您共享的代码很难确切地说出您应该如何做,但这里有一些好方法:
第一种方法是将字符串放在一个@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()
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的字符串存储在视图外部的类中,您可以使用ObservableObject
在您的类上实现协议并使字符串变量,@Published
以便对它的任何更改都会导致视图更新。在视图中,您需要将类变量设置为 an@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())
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11307 次 |
最近记录: |