🔰add item to list

SwiftUIviewstateactions ⟩ add item to list

📁 ContentView

List {
    // assume `data` is an environment object
    ForEach(data.creatures) { creature in 
        CreatureRow(creature: creature)
    }
}
// ⭐️ add toolbar item "New" to navigation bar
.toolbar { 
    ToolbarItem { 
        NavigationLink("New") { 
            // new data item editor view
            CreatureEditor()
                .navigationTitle("+ Creature")
        }
    }
}

📁 CreatureEditor

// ⭐️ new data item editor view
struct CreatureEditor: View {
    
    // ⭐️ get environment object
    @EnvironmentObject var data: CreatureZoo
    
    // ⭐️ new data item (a state value)
    @State private var creature = Creature(name: "untitled", emoji: "❓")
    
    // ⭐️⭐️⭐️ 啟用關閉此 view 的功能(事後用 dismiss() 關閉)
    @Environment(\.dismiss) private var dismiss
    
    var body: some View {
        VStack(alignment: .leading) {
            // ⭐️ UI to update data item
            Form {
                Section("Name") {
                    TextField("name", text: $creature.name)
                }   
                Section("Emoji") {
                    TextField("emoji", text: $creature.emoji)
                }
                Section("Creature Preview") {
                    CreatureRow(creature: creature)
                }
            }
        }// VStack
        // ⭐️ add toolbar item "Add" to navigation bar
        .toolbar { 
            ToolbarItem { 
                Button("Add") { 
                    // when button is tapped:
                    data.creatures.append(creature)  // ⭐️ add item to data
                    dismiss()                        // ⭐️ dismiss this view
                }
            }
        }
        
    }// body
}

Last updated

Was this helpful?