[英]Changing a string's text when a button is pressed in SwiftUI
我試圖弄清楚在 SwiftUI 中按下按鈕時如何更改字符串的文本。
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
let title = Text("Button Not Clicked")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(.red)
.padding()
.frame(height: 0.0)
}
Button(action: {
title.text = "Button Clicked!"
}) {
Text("Click Here")
}
}
}
到目前為止,我嘗試使用 'title.text = (string)' 更改字符串,但這不起作用。 有任何想法嗎?
您可以將其聲明為@State var buttonTitle: String = "Button Not Clicked"
on ContentView,而不是在 body 屬性中聲明字符串。 然后,您只需將buttonTitle = "Button Clicked"
放入您的操作閉包中。
import SwiftUI
struct ContentView: View {
@State var buttonTitle: String = "Button Not Clicked"
var body: some View {
VStack {
Text(buttonTitle)
.font(.title)
.fontWeight(.heavy)
.foregroundColor(.red)
.padding()
.frame(height: 0.0)
Button(action: {
buttonTitle = "Button Clicked!"
}) {
Text("Click Here")
}
}
}
}
UIKit 方法是嘗試訪問 label 並更改其字符串,但在 SwiftUI 中,您的 body 屬性將在每次視圖更新時有效地重新計算。
顯示多個字符串存儲在字典中的附加示例:
struct ContentView: View {
@State var labels: [String : String] = [
"header" : "This Is the header!",
"donger" : "",
"footer" : "Here's the footer."
]
var body: some View {
VStack {
Text(labels["header"]!)
Text(labels["donger"]!)
Text(labels["footer"]!)
Spacer()
Button("Update") {
updateDonger()
}
}
}
func updateDonger() {
labels["donger"] = #"╰( ͡° ͜ʖ ͡° )つ──☆*:・゚"#
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.