728x90
#문제
NavigationLink(destination: , isActive: )이 iOS16+ deprecated되어서 더 이상 사용할 수 없었습니다. 그래서 다른 메서드인 navigationDestination 사용하였는데, 화면이 전환되지 않았습니다.
NavigationLink(destination: , isActive: ) // deprecated!
#오류
처음에 코드를 짰을 때 navigationDestination이 작동하지 않아서 다음 화면으로 넘어가지 않았습니다.
struct OpeningView: View {
@State private var moveToScoreBoard = false
@State private var moveToLoadRecentGame = false
var body: some View {
NavigationView {
VStack {
Button("새 경기 시작하기") {
moveToScoreBoard = true
}.foregroundStyle(.blue)
.buttonStyle(.bordered)
}
.navigationDestination(isPresented: $moveToScoreBoard, destination: {
ScoreBoard()
})
}
}
}
# 오류 문구
NavigationLink presenting a value must appear inside a NavigationStack, NavigationSplitView, or List with selection. Link will be disabled.
( NavigationLink presenting a value는 NavigationStack, NavigationSplitView, or List with selection 안에 있어야 사용이 가능하다)
# 해결
NavigationView 제거 후 -> NavigationStack 추가
.navigationDestination이 정상적으로 작동하였습니다.
오류 문구와 공식 문서에 정답이 나와있습니다!
NavigationStack {
VStack {
Button("새 경기 시작하기") {
moveToScoreBoard = true
}.foregroundStyle(.blue)
.buttonStyle(.bordered)
}
.navigationDestination(isPresented: $moveToScoreBoard, destination: {
ScoreBoard()
})
'Apple > SwiftUI' 카테고리의 다른 글
[SwiftUI 특징] 선언적 구문, 데이터 주도적이다. (0) | 2023.10.27 |
---|