SwiftUI - 將表單分割成多個章節



SwiftUI 允許我們將表單的行劃分成多個章節。章節用於將表單內容組織成有意義的組。每個章節都有一個可選的頁首和頁尾,允許我們為表單的不同組提供標籤。在 SwiftUI 中,我們可以藉助 Section 檢視來實現章節。它通常用於以結構化的方式組織資料,從而改善使用者體驗。

在 SwiftUI 中建立章節表單

我們可以藉助 Section 檢視在表單中建立章節。它建立相關內容的組,使表單更容易導航。它為分組內容提供頁首和頁尾,以便使用者可以瞭解更多關於分組內容的資訊。單個表單可以包含多個章節。

語法

以下是語法:

Form{
   Section(){
      content
   }header:{
      //content
   }
   Section{

   }footer:{

   }
}

示例 1

以下 SwiftUI 程式建立一個包含一個章節的簡單表單。

import SwiftUI

struct ContentView: View {
   @State private var name: String = ""
   @State private var email: String = ""
   @State private var about: String = "Write about yourself..."
   @State private var notification = false
   @State private var city: String = "Delhi"

   var body: some View {
      NavigationStack{
         Form{
            Section{
               TextField("Enter Name", text: $name)
               TextField("Enter Email", text: $email)
               TextEditor(text: $about)
               Picker("City", selection:$city){
                  ForEach(["Delhi", "Mumbai", "Pune", "Kolkata"], id: \.self){
                     s in Text(s)
                  }
               }
            }
            Section{
               Toggle("Notification", isOn: $notification)
            }
         }.navigationTitle("Employee Data")
      }
   }
}   
#Preview {
   ContentView()
}

輸出

Form

示例 2

以下 SwiftUI 程式建立一個包含頁首和頁尾的簡單表單。

import SwiftUI
struct ContentView: View {
   @State private var name: String = ""
   @State private var email: String = ""
   @State private var about: String = "Write about yourself..."
   @State private var notification = false
   @State private var city: String = "Delhi"

   var body: some View {
      NavigationStack{
         Form{
            Section{
               TextField("Enter Name", text: $name)
               TextField("Enter Email", text: $email)
               TextEditor(text: $about)
               Picker("City", selection:$city){
                  ForEach(["Delhi", "Mumbai", "Pune", "Kolkata"], id: \.self){
                     s in Text(s)
                  }
               }
            }header: {
               Text("Employee's details")
            }footer: {
               Text("Provide personal data")
            }
            Section{
               Toggle("Notification", isOn: $notification)
            }header: {
               Text("Setting Notification")
            }
         }.navigationTitle("Employee Data")
      }
   }
}   
#Preview {
   ContentView()
}

輸出

Form
廣告
© . All rights reserved.