SwiftUI에서 계산 된 속성을 바인딩하는 방법

이반 C 미르 볼드

간단한 모델 주장이 있습니다.

struct Claim: Codable, Identifiable {
    let id: String
    var name: String

    var isSelected: Bool? = nil // used for selecting claims in a list
}

AddClaimView는에 이미 저장된 클레임을 필터링 role.claims하고 사용자가에 추가하기 위해 선택할 수 있도록 목록에 표시하기위한 것입니다 role.

struct AddClaimView: View {
    var claims: [Claim] // all possible claims
    @Binding var role: Role
    var claimsForAdding: [Claim] {
        self.claims.filter { claim in
            !self.role.claims.contains(claim)
        }
    }
    var body: some View {
        VStack {
            Text("Add claim")
                .font(.largeTitle)
            ClaimsListRows(claims: self.claimsForAdding.sorted())
        }
    }
}

필터링은 계산 된 속성에 의해 수행되며 claimsForAdding여기에 문제가 있습니다. 계산 된 속성 claimsForAdding@Binding var claims바인딩 ClaimsListRow한 다음 추가하려면 role.claims어떻게 해야 합니까?

@State var claimsForAdding.... 분명히 계산 된 속성에 대해 작동하지 않습니다.

struct ClaimsListRows: View {
    @Binding var claims: [Claim]
    var body: some View {
        List(claims) { claim in
// set property isSelected = true when tapping a row
.....

AddClaimView시트에 표시되는 보기 :

struct RoleDetailed: View {
    @Binding var role: Role
    @State var showAddClaim = false
    @Binding var claims: [Claim]

    var body: some View {
       VStack(alignment: .leading) {
            HStack {
                Text(role.name)
                    .font(.largeTitle)
                Spacer()
            }
            Text("id: " + role.id)
                .font(.footnote)
                .foregroundColor(Color.gray)
            List {
                ForEach(role.claims) { claim in
                    ClaimRow(claim: claim)
                }
            }
        }.font(.headline).padding(10)
        .navigationBarItems(trailing:
            Button(action: {
                self.showAddClaim.toggle()
            }) {
                Text("Add claim")
            }.sheet(isPresented: self.$showAddClaim, onDismiss: {
                print("dismissed")
            }, content: {
                AddClaimView(claims: self.claims, role: self.$role)
            })
        )
    }

}

내가받은 의견에서 이것은 새로운 것입니다 AddClaimView.

struct AddClaimView: View {
    var claims: [Claim]
    @Binding var role: Role
    var claimsForAdding: [Claim] {
        get {
            self.claims.filter { claim in
                !self.role.claims.contains(claim)
            }
        }
        set {
            var claims = self.claims
            claims.removeAll(where: { claim in
                newValue.contains(claim)
            })
        }
    }
    var body: some View {
        VStack {
            Text("Add claim")
                .font(.largeTitle)
            ClaimsListRows(claims: Binding<[Claim]>(
                get: {
                    self.claims.filter {
                        claim in !self.role.claims.contains(claim)
                    }
                    .sorted(by: { $0.name < $1.name })
                },
                set: { newValue in
                    var claims = self.claims
                    claims.removeAll(where: { claim in
                        newValue.contains(claim)
                    })
                    self.role.claims = claims
                }
            ))
        }
    }
}
Yonat

Binding역할을 업데이트 하는 사용자 지정 만들어야합니다 .

ClaimsListRows(claims: Binding<[Claim]>(
    get: {
        self.claims.filter {
            claim in !self.role.claims.contains(claim)
        }
        .sorted(by: { $0.name < $1.name })
    },
    set: { newValue in
        var claims = self.claims
        claims.removeAll(where: { claim in
            newValue.contains(claim)
        })
        self.role.claims = claims
    }
))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SwiftUI의 특정 인덱스에있는 열거 형의 계산 된 배열 속성에서 바인딩을 만드는 방법이 있습니까?

분류에서Dev

Ember에서 재귀 계산 된 속성을 만드는 방법

분류에서Dev

Vuetify 구성 요소에서 계산 된 속성 및 Vuex와 함께 Vue v-model 바인딩을 사용하는 방법은 무엇입니까?

분류에서Dev

구성 파일에서 계산 된 속성을 만드는 방법

분류에서Dev

SwiftUI NSManagedObject 하위 클래스의 계산 된 속성을 변경하는 방법

분류에서Dev

iOS 7에서 동적 / 계산 된 속성을 수행하는 방법

분류에서Dev

계산 된 속성 내에서 getter를 호출하는 방법

분류에서Dev

WPF 코드 숨김에서 바인딩 된 속성을 검색하는 방법

분류에서Dev

계산 된 속성에 대한 SwiftUI 바인딩?

분류에서Dev

Vue-VueJS에서 계산 된 속성을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

Vue-VueJS에서 계산 된 속성을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

인터페이스에서 계산 된 속성을 선언하는 방법이 있습니까?

분류에서Dev

계산 된 속성 메서드 내에서 계산 된 속성의 현재 값을 읽는 방법은 무엇입니까?

분류에서Dev

SQL 쿼리에서 계산 된 열 중복 계산을 방지하는 방법

분류에서Dev

값 속성을 바인딩하는 적절한 방법은 자바 FX / TornadoFX의 컨트롤에서 파생 된

분류에서Dev

계산 된 함수를 사용하여 foreach 관찰 가능한 배열 내에서 CSS 바인딩을 지정하는 방법

분류에서Dev

Vue.js 메서드에서 계산 된 속성을 변경하는 방법은 무엇입니까?

분류에서Dev

입력 필드에서 v-model 및 계산 된 속성을 사용하는 방법은 무엇입니까?

분류에서Dev

계산 된 속성에서 예기치 않은 부작용을 피하는 방법-VueJS

분류에서Dev

새 컴포지션 API에서 계산 된 속성을 입력하는 방법은 무엇입니까?

분류에서Dev

TypeScript에서 계산 된 속성 이름을 사용하는 방법은 무엇입니까?

분류에서Dev

Pyventory에서 자동 계산 된 속성을 재사용하는 방법은 무엇입니까?

분류에서Dev

계산 된 속성에서 소품을 사용하는 방법은 무엇입니까?

분류에서Dev

Laravel에서 중첩 된 관계 속성을 합산하는 방법은 무엇입니까?

분류에서Dev

Django에서 외래 키 속성 값을 계산하는 방법

분류에서Dev

C #에서 속성을 계산하는 두 가지 방법

분류에서Dev

계산 된 바인딩에서 헤더를 반환 한 후 Iron Ajax 비동기를 호출하는 방법

분류에서Dev

모델 EF Core에 대한 계산 된 속성-속성 또는 방법?

분류에서Dev

v 모델을 계산 된 속성에 동적으로 바인딩

Related 관련 기사

  1. 1

    SwiftUI의 특정 인덱스에있는 열거 형의 계산 된 배열 속성에서 바인딩을 만드는 방법이 있습니까?

  2. 2

    Ember에서 재귀 계산 된 속성을 만드는 방법

  3. 3

    Vuetify 구성 요소에서 계산 된 속성 및 Vuex와 함께 Vue v-model 바인딩을 사용하는 방법은 무엇입니까?

  4. 4

    구성 파일에서 계산 된 속성을 만드는 방법

  5. 5

    SwiftUI NSManagedObject 하위 클래스의 계산 된 속성을 변경하는 방법

  6. 6

    iOS 7에서 동적 / 계산 된 속성을 수행하는 방법

  7. 7

    계산 된 속성 내에서 getter를 호출하는 방법

  8. 8

    WPF 코드 숨김에서 바인딩 된 속성을 검색하는 방법

  9. 9

    계산 된 속성에 대한 SwiftUI 바인딩?

  10. 10

    Vue-VueJS에서 계산 된 속성을 올바르게 사용하는 방법은 무엇입니까?

  11. 11

    Vue-VueJS에서 계산 된 속성을 올바르게 사용하는 방법은 무엇입니까?

  12. 12

    인터페이스에서 계산 된 속성을 선언하는 방법이 있습니까?

  13. 13

    계산 된 속성 메서드 내에서 계산 된 속성의 현재 값을 읽는 방법은 무엇입니까?

  14. 14

    SQL 쿼리에서 계산 된 열 중복 계산을 방지하는 방법

  15. 15

    값 속성을 바인딩하는 적절한 방법은 자바 FX / TornadoFX의 컨트롤에서 파생 된

  16. 16

    계산 된 함수를 사용하여 foreach 관찰 가능한 배열 내에서 CSS 바인딩을 지정하는 방법

  17. 17

    Vue.js 메서드에서 계산 된 속성을 변경하는 방법은 무엇입니까?

  18. 18

    입력 필드에서 v-model 및 계산 된 속성을 사용하는 방법은 무엇입니까?

  19. 19

    계산 된 속성에서 예기치 않은 부작용을 피하는 방법-VueJS

  20. 20

    새 컴포지션 API에서 계산 된 속성을 입력하는 방법은 무엇입니까?

  21. 21

    TypeScript에서 계산 된 속성 이름을 사용하는 방법은 무엇입니까?

  22. 22

    Pyventory에서 자동 계산 된 속성을 재사용하는 방법은 무엇입니까?

  23. 23

    계산 된 속성에서 소품을 사용하는 방법은 무엇입니까?

  24. 24

    Laravel에서 중첩 된 관계 속성을 합산하는 방법은 무엇입니까?

  25. 25

    Django에서 외래 키 속성 값을 계산하는 방법

  26. 26

    C #에서 속성을 계산하는 두 가지 방법

  27. 27

    계산 된 바인딩에서 헤더를 반환 한 후 Iron Ajax 비동기를 호출하는 방법

  28. 28

    모델 EF Core에 대한 계산 된 속성-속성 또는 방법?

  29. 29

    v 모델을 계산 된 속성에 동적으로 바인딩

뜨겁다태그

보관