SwiftUI 네비게이션링크를 통해 값을 넘기고 싶다면?

마이노·2022년 11월 10일
0

오늘 팀 프로젝트를 진행하며 생긴 문제점이였다.
네비게이션링크를 통해 다음 뷰로 이동하는 방식이였고, 이동할 때 배열에 append를 해야 하는 상황이었다. 버튼으로 구현이 되어있었다면 action을 통해 값을 넘길 수 있었지만 버튼이 없었다.
어떤 방법이 없을까 찾아보던 와중 좋은 방법을 찾아 포스팅한다.

// MARK: 기록클릭으로 데이터를 넘기기 위한 설정들(1)
struct ViewDidLoadModifier: ViewModifier {

    @State private var didLoad = false
    private let action: (() -> Void)?

    init(perform action: (() -> Void)? = nil) {
        self.action = action
    }

    func body(content: Content) -> some View {
        content.onAppear {
            if didLoad == false {
                didLoad = true
                action?()
            }
        }
    }

}

// MARK: 기록클릭으로 데이터를 넘기기 위한 설정들(2)
extension View {
    func onLoad(perform action: (() -> Void)? = nil) -> some View {
        modifier(ViewDidLoadModifier(perform: action))
    }

}

onLoad라는 함수를 사용하였고

                .onLoad {
                    bpmData.resultArray.append(bpmData.name)
                }

이 함수를 VStack에다가 설정해 두어 VStack이 로드된다면(보여진다면,이동이 되었다면)배열에 append를 하는 형식으로 구현을 해보았다. 액션을 통해 손쉽게 값을 넘길 수 있었지만 새로운 문제점에 부딪혀 오히려 색다른 방법을 알게되었고 신나는마음에 포스팅을...!!😆

profile
아요쓰 정벅하기🐥

0개의 댓글