반응형

 

Hacking with Swift 사이트의 강좌 번역본입니다.

 

[원문 : https://www.hackingwithswift.com/quick-start/swiftui/how-to-let-users-delete-rows-from-a-list]

 

How to let users delete rows from a list

 

SwiftUI는 onDelete(perform:) 처리기(handler)를 일부 또는 모든 데이터에 붙여서 사용자가 스와이프로 행을 쉽게 삭제할 수 있습니다. 이러한 처리기는 다음과 같이 삭제한 여러개의 인덱스들을 받는 특별한 표시(signature)가 필요합니다.

func delete(at offsets: IndexSet) {

 

그 내부에서는 일반적으로 시퀀스에서 요청했던 행들(rows)을 삭제하기 위해서 Swift의 remove(atOffset:) 메소드를 호출하길 원할 것입니다. SwiftUI는 상태(state)를 관찰하기 때문에, 모든 변경사항은 UI에 자동적으로 반영될 것입니다.

 

예를들어, 다음은 3개의 항목 목록으로 된 ContentView 구조체를 만들고 목록에서 항목을 삭제하는 onDelete(perform:) modifier를 붙입니다.

struct ContentView: View {
    @State private var users = ["Paul", "Taylor", "Adele"]

    var body: some View {
        NavigationView {
            List {
                ForEach(users, id: \.self) { user in
                    Text(user)
                }
                .onDelete(perform: delete)
            }
        }
    }

    func delete(at offsets: IndexSet) {
        users.remove(atOffsets: offsets)
    }
}

 

코드를 실행하는 경우에 스와이프(swipe)로 목록에 있는 행을 삭제할 수 있는것을 알게 될 것입니다.

 

반응형
Posted by 까칠코더
,