【SwiftUI】NavigationView의 기본적인 사용법(전편)
해설하는 내 앱은 여기.
이해 - 공부 지원 앱 -
NavigationView
계층적 화면 전환을 관리하는 뷰.
공식 참조
NavigationLink
NavigationView 내에서, 화면 천이를 실시하는 트리거가 되는 뷰와 천이처의 뷰의 양쪽 모두를 지정할 수 있는 뷰. NavigationView와 세트로 사용한다.
공식 참조
실제 동작
※확장 추천
NavigationView 내에서, 화면 천이를 실시하는 트리거가 되는 뷰와 천이처의 뷰의 양쪽 모두를 지정할 수 있는 뷰. NavigationView와 세트로 사용한다.
공식 참조
실제 동작
※확장 추천
동영상 포인트
- NavigationView의 외부 영역은 전환되지 않고 전환 대상에도 표시됩니다. (동영상의 도움말 버튼)
- 전환 대상 화면의 왼쪽 상단에는 이전 화면으로 돌아가는 버튼이 표시됩니다.
- 돌아오는 버튼에는 타이틀이 그대로 쓰여진다.
코드
이번에 작성한 샘플 앱의 소스 코드는 여기
먼저 최상위 계층에서 살펴보겠습니다.
import SwiftUI
struct ContentView: View {
let regions = ["カントー地方", "ジョウト地方", "ホウエン地方", "シンオウ地方"]
var body: some View {
VStack{
// ここから
HStack{
Spacer()
Button(action: {}, label: {
Text("ヘルプ")
})
}
.padding(.horizontal)
// ここまではNavigationViewに含まれない
//ここから
NavigationView {
List(0..<4) { n in
NavigationLink(regions[n], destination: Region(id: n, regionName: regions[n]))
}
.navigationTitle("そらをとぶ")
}
//ここまでがNavigationViewの領域
}
}
}
기본적으로 전환(전환)은 NavigationView의 {}에 있는 요소뿐입니다. 위 소스 코드의 '도움말'이라는 버튼은 NavigationView에 포함되지 않으므로 링크를 탭해도 전환하지 않고 화면 상단에 남아 있습니다(동영상 확인). 이번 '도움말' 버튼과 같이 어떤 이유로 전환 대상에도 계속 표시하고 싶은 것이 있다면 NavigationView에 포함하지 않는 것이 좋습니다.
다음으로 NavigationView를 살펴보겠습니다.
NavigationView 안에는 NavigationLink가 쓰여져 있으며, List의 반복 처리로 4개 늘어놓도록 하고 있습니다. 위에서 설명한 것처럼 NavigationLink는 화면 전환의 트리거와 전환 대상의 뷰를 지정할 수 있습니다. 이번에는 regions[n]
(배열 regions의 n 번째 요소)가 트리거되고 Regionビュー
가 전환 대상입니다.
Region 뷰 소스 코드는 여기.
import SwiftUI
struct Region: View {
let id: Int //地方によって表示を変えるためのプロパティ
let regionName: String //地方の名前をタイトルにするためのプロパティ
var body: some View {
//NavigationViewは書かない
List(0..<4) { n in
NavigationLink(regionsArray[id][n], destination: Flight(city: regionsArray[id][n]))
.navigationTitle(regionName)
}
}
}
//各地方ごとのデータ
let kanto = ["マサラタウン", "トキワシティ", "ニビシティ", "ハナダシティ"]
let joto = ["ワカバタウン", "ヨシノシティ", "キキョウシティ", "ヒワダタウン"]
let hoen = ["ミシロタウン", "コトキタウン", "トウカシティ", "カナズミシティ"]
let shino = ["フタバタウン", "マサゴタウン", "クロガネシティ", "コトブキシティ"]
//idに対応する配列を取り出すための配列
let regionsArray = [kanto, joto, hoen, shino]
여기서 보는 것은 NavigationLink가 있지만 NavigationView에 대한 설명이 어디에도 쓰여지지 않는다는 것입니다. NavigationView는 최상위 계층이 되는 뷰에 쓰는 것만으로, 전환처에도 기능을 갖게 할 수 있습니다.
반대로 아래의 계층구조에도 NavigationView를 작성하고 다음 화면으로 전환하면 이와 같이 됩니다.
화면 왼쪽 상단에 이전 화면으로 돌아가는 두 개의 버튼이 늘어서 있다고 생각합니다. 이것은 NavigationView에서 NavigationView를 만드는 것으로 결정된 결과입니다. 이와 같이 표시하고 싶은 경우는 별도입니다만, 기본은 맨 위의 계층구조에만 NavigationView 를 쓰는 것을 추천합니다.
다음 번에는 navigationTitle에 대해 씁니다.
참고문헌
SwiftUI 철저 입문 가네다 히로아키 (저) ([주의]Xcode12 비대응의 것입니다)
Reference
이 문제에 관하여(【SwiftUI】NavigationView의 기본적인 사용법(전편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masayoshi0327/items/d4696f4f1e48a5e05137텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)