@@ -9,12 +9,14 @@ import SwiftUI
99
1010struct MainView : View {
1111 @Environment ( TaskManager . self) var taskManager
12+
13+ @State private var showFAB : Bool = true
1214 @State private var isShowDoneTask : Bool = true
1315
14- var tasks : [ TaskModel ] { taskManager. tasks. filter { $0. isDone == false } }
15- var doneTasks : [ TaskModel ] { taskManager. tasks. filter { $0. isDone == true } }
16+ private var tasks : [ TaskModel ] { taskManager. tasks. filter { $0. isDone == false } }
17+ private var doneTasks : [ TaskModel ] { taskManager. tasks. filter { $0. isDone == true } }
1618
17- var isShowDoneTaskButtonTitle : String {
19+ private var isShowDoneTaskButtonTitle : String {
1820 isShowDoneTask ? " 완료 숨기기 " : " 완료 보기 "
1921 }
2022
@@ -28,18 +30,23 @@ struct MainView: View {
2830 TaskEmptyView ( )
2931 } else {
3032 ForEach ( tasks) { task in
31- NavigationLink {
32- TaskEditView ( task: task)
33- } label: {
33+ ZStack {
34+ NavigationLink {
35+ TaskEditView ( task: task)
36+ } label: {
37+ EmptyView ( )
38+ }
39+ . swipeActions {
40+ Button ( " 삭제 " ) {
41+ taskManager. delete ( task: task)
42+ } . tint ( Color . Todo. red)
43+ }
44+ . opacity ( 0 )
45+
3446 TaskListItemView ( task: task)
3547 }
3648 . listRowSeparator ( . hidden)
3749 . listRowInsets ( EdgeInsets ( ) )
38- . swipeActions {
39- Button ( " 삭제 " ) {
40- taskManager. delete ( task: task)
41- } . tint ( Color . Todo. red)
42- }
4350 }
4451 }
4552 } header: {
@@ -51,18 +58,23 @@ struct MainView: View {
5158 if isShowDoneTask {
5259 Section {
5360 ForEach ( doneTasks) { task in
54- NavigationLink {
55- TaskEditView ( task: task)
56- } label: {
61+ ZStack {
62+ NavigationLink {
63+ TaskEditView ( task: task)
64+ } label: {
65+ EmptyView ( )
66+ }
67+ . swipeActions {
68+ Button ( " 삭제 " ) {
69+ taskManager. delete ( task: task)
70+ } . tint ( Color . Todo. red)
71+ }
72+ . opacity ( 0 )
73+
5774 TaskListItemView ( task: task)
5875 }
5976 . listRowSeparator ( . hidden)
6077 . listRowInsets ( EdgeInsets ( ) )
61- . swipeActions {
62- Button ( " 삭제 " ) {
63- taskManager. delete ( task: task)
64- } . tint ( Color . Todo. red)
65- }
6678 }
6779 } header: {
6880 Text ( " 완료 " )
@@ -96,9 +108,18 @@ struct MainView: View {
96108 }
97109 }
98110 }
111+ . onAppear {
112+ showFAB = true
113+ }
114+ . onDisappear {
115+ showFAB = false
116+ }
99117 }
100118 . scrollContentBackground ( . hidden)
101- . overlay ( CircleButton ( ) . offset ( x: - 24 , y: - 24 ) , alignment: . bottomTrailing)
119+ . overlay (
120+ showFAB ? CircleButton ( ) . offset ( x: - 24 , y: - 24 ) : nil ,
121+ alignment: . bottomTrailing
122+ )
102123 }
103124}
104125
0 commit comments