【SwiftUI】NavigationView의 기본적인 사용법(후편)
전회는 이쪽↓
navigationTitle 수정자
NavigationView에 제목을 붙일 수 있는 수정자.
공식 참조↓
실제 동작
첫 번째와 두 번째 소스 코드의 차이는 navigationTitle을 붙였는지 여부입니다.
실제 소스 코드를 살펴 보겠습니다.
소스 코드
ContentView.swiftimport 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("そらをとぶ") //ここでタイトルをつけている
}
}
}
}
.navigationTitle
라는 코드만으로, 폰트의 크기나 굵기를 타이틀 같게 해 줍니다.
navigaitonTitle에는 다음과 같은 기능도 있습니다.
돌아가기 버튼의 이름이 되십시오.
첫 화면에서 링크를 탭해 봅니다.
그러면 ,,
따라서 이전 화면으로 돌아가는 버튼의 이름으로 navigationTitle이 그대로 사용됩니다.
또, 화면 천이의 때에 애니메이션도 자동으로 붙여 줍니다. (동영상 참조)
navigationTitle은 어디에 쓰는가?
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("そらをとぶ") //ここでタイトルをつけている
}
}
}
}
첫 화면에서 링크를 탭해 봅니다.
그러면 ,,
따라서 이전 화면으로 돌아가는 버튼의 이름으로 navigationTitle이 그대로 사용됩니다.
또, 화면 천이의 때에 애니메이션도 자동으로 붙여 줍니다. (동영상 참조)
navigationTitle은 어디에 쓰는가?
흔한 실수(주로 내가)로 다음과 같이 쓰는 패턴이 있습니다.
ContentView.swift
NavigationView {
List(0..<4) { n in
NavigationLink(regions[n], destination: Region(id: n, regionName: regions[n]))
}
// .navigationTitle("そらをとぶ") //本来はここに書く
}
.navigationTitle("そらをとぶ") //NavigationViewの外側に書いている
이런 식으로 작성하면 오류가 발생하지 않지만 제목은 더 이상 표시되지 않습니다.
navigationTitle은 처음에는 하나의 화면 제목이므로 전환 대상으로 인계받지 않습니다. 각 화면에서 navigationTitle을 클릭합니다.
따라서 navigationTitle은 NavigationView 내부에 쓰는 것으로 인식하는 것이 좋습니다.
참고문헌
Reference
이 문제에 관하여(【SwiftUI】NavigationView의 기본적인 사용법(후편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masayoshi0327/items/c9e92fe43bdd4606b87a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)