[英]SwiftUI - NavigationLink not showing 'Back' or title of the view besides arrow on next view
SwiftUI 和 WatchOS 的新手。 我将 NavigationLink 包裹在列表中的行周围。 当我单击列表中的行时,它确实导航到新视图,但我只看到新视图左上角的“<”后退箭头。 我没有看到“返回”这个词,甚至没有看到它的视图标题。 下面是我的代码。 我的理解是默认显示“返回”字样。 我错过了什么吗?
内容视图:
struct ContentView: View {
@StateObject var userSettingsStore = UserSettingsStore()
var body: some View {
MainMenuListView()
}
}
主菜单列表视图:
struct MainMenuListView: View {
@EnvironmentObject var userSettingsStore: UserSettingsStore
var body: some View {
VStack {
let menuItems = MenuOptions().menu
List(menuItems) { item in
NavigationLink(destination: MenuDestination(rawValue: item.id)?.view) {
MenuListRowView(imageName: item.imageName, menuItemName: item.name)
}.navigationViewStyle(StackNavigationViewStyle())
}
}.navigationTitle("Sample Application")
}
}
Menu Destination 返回每行应该导航到的视图。 假设我单击第 2 行并导航到 CustomView。
自定义视图:
struct CustomView: View {
@StateObject var viewModel: CustomViewModel
var body: some View {
VStack {
HStack {
Text("Books List")
Spacer()
Button(action: {}) {
Image(systemName: "calendar.circle").foregroundColor(Color(red: 32 / 255, green: 148 / 255, blue: 249 / 255))
}.buttonStyle(PlainButtonStyle())
}
List(CustomMockData().booksList) { item in
CustomRowView(bookItem: item)
}
}.onAppear() {
self.viewModel.getBooksList()
}
}
}
下面是新视图的外观,即只有“<”,除此之外没有任何文本。 如何显示文本?
编辑:为应用文件添加代码。
@main
struct myCustomApp: App {
@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var delegate
@SceneBuilder var body: some Scene {
WindowGroup {
NavigationView {
ContentView().environmentObject(UserSettingsStore())
}
}
WKNotificationScene(controller: NotificationController.self, category: "myCategory")
}
}
通过在我的下一个视图(即自定义视图)中添加 .navigationBarTitle("Main Menu"),我能够显示除 '<' 后退箭头之外的标题。
代码:
struct CustomView: View {
@StateObject var viewModel: CustomViewModel
var body: some View {
VStack {
HStack {
Text("Books List")
Spacer()
Button(action: {}) {
Image(systemName: "calendar.circle").foregroundColor(Color(red: 32 / 255, green: 148 / 255, blue: 249 / 255))
}.buttonStyle(PlainButtonStyle())
}
List(CustomMockData().booksList) { item in
CustomRowView(bookItem: item)
}
}.navigationBarTitle("Main Menu").onAppear() {
self.viewModel.getBooksList()
}
}
}
尝试将 MainMenuListView 包装在实际的导航视图中:
struct ContentView: View {
@StateObject var userSettingsStore = UserSettingsStore()
var body: some View {
NavigationView{
MainMenuListView()
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.