ContentView.swift
// // ContentView.swift // Test // // Created by Cairocoders // import SwiftUI struct ContentView: View { private var todoItems = [ ToDoItem(name: "Learn SwiftUI"), ToDoItem(name: "Learn Programming language"), ToDoItem(name: "Learn Python"), ToDoItem(name: "Coding"), ToDoItem(name: "Read Books"), ToDoItem(name: "Play basketball"), ToDoItem(name: "Coding"), ToDoItem(name: "Buy some stuff"), ToDoItem(name: "Create Project App"), ToDoItem(name: "Play games") ] @State private var searchText = "" @State var show = false var body: some View { ZStack { VStack { HStack { Text("ToDo List") .font(.system(size: 30, weight: .black, design: .rounded)) Spacer() Button(action: { show.toggle() }) { Image(systemName: "plus.circle.fill") .font(.largeTitle) .foregroundColor(.purple) } } .padding() SearchBar(text: $searchText) .padding(.top, 10) List(todoItems.filter({ searchText.isEmpty ? true : $0.name.contains(searchText) })) { item in Text(item.name) } .padding(.top, 20) }//End VStack .sheet(isPresented: $show, content: { Addnew() }) } } } struct Addnew: View { @State private var newTodo = "" var body: some View { HStack { //Horizontal Stack TextField("Add todo...", text: $newTodo) .textFieldStyle(RoundedBorderTextFieldStyle()) Button(action: { }) { Image(systemName: "plus") } .padding(.leading, 5) }.padding() //end horizontal stack } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }SearchBar.swift
// // SearchBar.swift // Test // // Created by Cairocoders // import SwiftUI struct SearchBar: View { @Binding var text: String @State private var isEditing = false var body: some View { HStack { TextField("Search ...", text: $text) .padding(7) .padding(.horizontal, 25) .background(Color(.systemGray6)) .cornerRadius(8) .overlay( HStack { Image(systemName: "magnifyingglass") .foregroundColor(.gray) .frame(minWidth: 0, maxWidth: .infinity, alignment: .leading) .padding(.leading, 8) if isEditing { Button(action: { self.text = "" }) { Image(systemName: "multiply.circle.fill") .foregroundColor(.gray) .padding(.trailing, 8) } } } ) .padding(.horizontal, 10) .onTapGesture { self.isEditing = true } if isEditing { Button(action: { self.isEditing = false self.text = "" // Dismiss the keyboard UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) }) { Text("Cancel") } .padding(.trailing, 10) .transition(.move(edge: .trailing)) .animation(.default) } } } } struct SearchBar_Previews: PreviewProvider { static var previews: some View { SearchBar(text: .constant("")) } }ToDoItem.swift
// // ToDoItem.swift // Test // // Created by Cairocoders // import Foundation import CoreData enum Priority: Int { case low = 0 case normal = 1 case high = 2 } struct ToDoItem: Identifiable { var id = UUID() var name: String = "" var priorityNum: Priority = .normal var isComplete: Bool = false }