오늘 팀 프로젝트를 진행하며 생긴 문제점이였다.
네비게이션링크를 통해 다음 뷰로 이동하는 방식이였고, 이동할 때 배열에 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를 하는 형식으로 구현을 해보았다. 액션을 통해 손쉽게 값을 넘길 수 있었지만 새로운 문제점에 부딪혀 오히려 색다른 방법을 알게되었고 신나는마음에 포스팅을...!!😆