日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SwiftUI之如何创建常量绑定与自定义绑定

發布時間:2024/5/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SwiftUI之如何创建常量绑定与自定义绑定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、如何創建常量綁定?

  • 當正在制作一些 UI 原型時,或者當只需要傳入一個值來讓 SwiftUI 預覽顯示一些有意義的東西時,可以會發現使用常量綁定很有幫助:硬編碼的值不會改變,但可以仍然像常規綁定一樣使用,因此我們的代碼可以正常工作。
  • 例如,如果想創建一個切換開關,通常必須創建一個@State 屬性來存儲布爾值,然后在創建它時將其發送到切換開關中;但是,如果只是為用戶界面設計原型,則可以改用常量綁定,如下所示:
Toggle(isOn: .constant(true)) {Text("Show advanced options") }
  • 效果如下:

  • 該開關是只讀的并且始終處于開啟狀態,因為這就是我們的常量綁定所說的,但現在足以讓您動起來,可以稍后返回并用完整的 @State 屬性替換它。這些常量綁定有各種類型:布爾值、字符串、整數等都可用,Swift 將確保為每種視圖類型使用正確的綁定。

二、如何創建自定義綁定?

  • 當使用 SwiftUI 的 @State 屬性包裝器時,它為我們做了大量的工作來允許用戶界面控件的雙向綁定。 但是,我們也可以使用 Binding 類型手動創建綁定,它可以提供自定義的 get 和 set 閉包,以便在讀取或寫入值時運行。
  • 例如,創建一個簡單的綁定,它只是作為另一個屬性的傳遞:
struct ContentView: View {@State private var username = ""var body: some View {let binding = Binding(get: { self.username },set: { self.username = $0 })return VStack {TextField("Enter your name", text: binding)}} }
  • 當綁定到自定義 Binding 實例時,不需要在綁定名稱前使用 $ 符號,因為已經閱讀了雙向綁定。
  • 當想為正在讀取或寫入的綁定添加額外的邏輯時,自定義綁定非常有用,我們可能希望在將值發回之前執行一些計算,或者可能希望在值更改時采取一些額外的操作。例如,可以創建一個由兩個切換開關組成的堆棧,其中兩個開關都可以關閉,一個可以打開,但不能同時打開,啟用一個將始終禁用另一個,如下所示:
struct ContentView: View {@State private var firstToggle = false@State private var secondToggle = falsevar body: some View {let firstBinding = Binding(get: { self.firstToggle },set: {self.firstToggle = $0if $0 == true {self.secondToggle = false}})let secondBinding = Binding(get: { self.secondToggle },set: {self.secondToggle = $0if $0 == true {self.firstToggle = false}})return VStack {Toggle(isOn: firstBinding) {Text("First toggle")}Toggle(isOn: secondBinding) {Text("Second toggle")}}} }

總結

以上是生活随笔為你收集整理的SwiftUI之如何创建常量绑定与自定义绑定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。