簡體   English   中英

在 SwiftUI 中按下按鈕時更改字符串的文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM