![](/img/trans.png)
[英]SwiftUI: horizontal ScrollView inside NavigationLink breaks navigation
[英]Why is NavigationLink not navigation with SwiftUI
我正在嘗試使用 NavigationLink 導航到 LoginScreen。 然而,點擊按鈕並沒有做任何事情。 如果我調用 onTapGesture 方法,它就會被觸發。
struct SplashScreen: View {
@State
var shouldGoHome: Bool = false
@State
var goToDestination: Bool = false
@ObservedObject private var viewModel = SplashViewModel()
var body: some View {
VStack {
VColorBackground()
Text("VOWER")
.foregroundColor(Color(ColorTheme.brandBlue.value))
.font(.system(size: 36))
.tracking(20)
Text("YOUR TIME DESRVES A\n LOUDER APPLAUSE")
.tracking(2)
.multilineTextAlignment(.center)
.padding(EdgeInsets.init(top: 30, leading: 0, bottom: 0, trailing: 0))
.font(.system(size: 14))
.foregroundColor(Color.black)
if (viewModel.isUserLoggedIn) {
VowerNavigationButton(text: "Get Started", goToDestination: $goToDestination) {
AppView()
}
.padding(EdgeInsets.init(top: 70, leading: 0, bottom: 0, trailing: 0))
} else {
NavigationLink(destination: LoginScreen()) {
VowerButtonStyle(text: "Get Started")
}
.padding(EdgeInsets.init(top: 70, leading: 0, bottom: 0, trailing: 0))
}
Spacer()
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.all)
}
}
您必須將視圖包裝在 NavigationView { } 中,否則 NavigationLink 將無法工作。
struct SplashScreen: View {
@State
var shouldGoHome: Bool = false
@State
var goToDestination: Bool = false
@ObservedObject private var viewModel = SplashViewModel()
var body: some View {
NavigationView{
VStack {
VColorBackground()
Text("VOWER")
.foregroundColor(Color(ColorTheme.brandBlue.value))
.font(.system(size: 36))
.tracking(20)
Text("YOUR TIME DESRVES A\n LOUDER APPLAUSE")
.tracking(2)
.multilineTextAlignment(.center)
.padding(EdgeInsets.init(top: 30, leading: 0, bottom: 0, trailing: 0))
.font(.system(size: 14))
.foregroundColor(Color.black)
if (viewModel.isUserLoggedIn) {
VowerNavigationButton(text: "Get Started", goToDestination: $goToDestination) {
AppView()
}
.padding(EdgeInsets.init(top: 70, leading: 0, bottom: 0, trailing: 0))
} else {
NavigationLink(destination: LoginScreen()) {
VowerButtonStyle(text: "Get Started")
}
.padding(EdgeInsets.init(top: 70, leading: 0, bottom: 0, trailing: 0))
}
Spacer()
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.all)
}
}
}
為了更好地理解導航,請看下面的代碼
var body: some View {
NavigationView{
VStack(){
Text("VOWER")
NavigationLink(destination: detailView){
VStack(){
Text("Sunset").foregroundColor(Color.blue)
}
}.navigationBarTitle("Login") //define Title bar for better understanding and ease
}
}
}
同樣在目標視圖SwiftUI類中,可以定義navigationBarTitle
var body: some View {
VStack(){
Text("Turn Notification On/Off")
}.navigationBarTitle("Settings")
}
- 它在設備上運行良好,模擬器有第二次無法運行的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.