Swiftでアプリ。- Todoリスト! 4
リストに追加していくことができるようになり再起動してもデータが残るようにもできました。次はいらないものを削除できるようししていきます。
今のリストは
List( todoList,id:\.self){todoData in
Text(todoData)
}
で表示させていますが、削除の機能をつけるには削除のメソッドを持つ"forEarch"を使います。
ForEach(todoList,id:\.self){todoData in
Text(todoData)
}
これにモディファイアをつけてリストを削除できるようにします。
List{
ForEach(todoList,id:\.self){todoData in
Text(todoData)
}.onDelete{ IndexSet in
self.todoList.remove(atOffsets: IndexSet)
}
}
.onDeleteを使うと削除できるようになります。
次にリストを移動できるような仕組みを作ります。
.onMoveを使います。
.onMove{(IndexSet,Destination) in
self.todoList.move(fromOffsets: IndexSet, toOffset: Destination)
}
のようにします。
後は"EditButton()"の設置が必須です。これがないと移動はできません。
全体としては
List{
ForEach(todoList,id:\.self){todoData in
Text(todoData)
}.onDelete{ IndexSet in
self.todoList.remove(atOffsets: IndexSet)
}.onMove{(IndexSet,Destination) in
self.todoList.move(fromOffsets: IndexSet, toOffset: Destination)
}
}
これで削除と移動ができるようになりました。最後にこの状態を維持するために保存するようにします。
UserDefaults.standard.set(self.todoList,forKey: "todoSave")
を.onDelete、.onMoveの命令にくっつけます。
とすれば保存できるようになります。
後は入力する時に何も入れずに登録しようとするとアラートを出して入力できないようにします。
変数宣言します。
@State var isAlert = false
アラートを出す仕組みを作ります。変数宣言した"iaAlert"が"True"になった場合にアラートを出すようにします。コードとしては
.alert("入力をしてください", isPresented: $isAlert){}
とすれば、"iaAlert"が"True"になった場合にアラートが出るようになります。この操作は全体に影響させたいので、
VStack{}の直下、".onApear()"と同じ芭蕉に書きます。
後は、"iaAlert"が"True"になるタイミングを作ります。この場合は"add"ボタンを押したタイミングで空欄であればアラートを出したいので
Button(action: {
if todo == ""{
isAlert.toggle()
}else{
self.todoList.append(self.todo)
UserDefaults.standard.set(self.todoList,forKey: "todoSave")
self.todo = ""
}
})
.toggle()でfalseをtrueに変えてやります。
空欄であれば、falseになりアラートが出ることになります。入力されるとelse{}が実行され保存されることになります。
この記事が気に入ったらサポートをしてみませんか?