내가 하려고 기본 SwiftUI 목록에서 각각의 새로운 목록 항목에서 최고의 목록입니다. 이렇게 하려면 내가 추가됩니다.반전()을 배열로 전달되 ForEach 반복으로 표시 viewModel.itemList
. 나는 또한 설정합니다.onDelete 를 핸들을 제거하는 목록 항목입니다. 그러나 때,항목을 삭제한 마지막 항목으로 목록에서,그 대신 삭제 마지막 항목 배열에서(항목에서 최고의 목록). 나는 어떻게 구성할 수 있습니다.onDelete 을 삭제하는 올바른 항목 배열이 취소됩니까?
내 코드는 아래. 감사합니다!
콘텐츠
struct ContentView: View {
@StateObject var viewModel = ToDoListViewModel()
@State private var listItemName = ""
var body: some View {
NavigationView {
VStack(alignment: .leading) {
List {
ForEach(viewModel.itemList.reversed()) { item in
Text(item.listItem)
}.onDelete { index in
self.viewModel.itemList.remove(atOffsets: index)
}
}
HStack {
TextField("Enter List Item", text: $listItemName)
Button(action: {
viewModel.addToList(ToDoModel(listItem: listItemName))
listItemName = ""
}) {
Image(systemName: "plus")
.font(.largeTitle)
.frame(width: 75, height: 75)
.foregroundColor(Color.white)
.background(Color.blue)
.clipShape(Circle())
}
}.frame(minWidth: 100, idealWidth: 150, maxWidth: 500, minHeight: 30, idealHeight: 40, maxHeight: 50, alignment: .leading)
.padding(.leading, 16)
.padding(.trailing, 16)
}.navigationBarTitle("To Do List", displayMode: .inline)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
모델
struct ToDoModel: Identifiable, Codable {
var id = UUID()
var listItem: String = ""
}
뷰 모델
class ToDoListViewModel: ObservableObject {
@Published var itemList = [ToDoModel]()
func addToList( _ item: ToDoModel) {
itemList.append(item)
}
}