SwiftUI navigationBarBackButtonHidden 没有按预期工作
SwiftUI navigationBarBackButtonHidden not working as expected
navigationBarBackButtonHidden
修饰符有问题。它不会隐藏导航后退按钮...
这是列表的源代码:
import SwiftUI
struct ContentView: View {
@State var showSheet = false
var body: some View {
NavigationView {
List(chatsData, id: \.self.id) { chat in
NavigationLink(destination: ChatView(chat: chat)) {
ChatRow(chat: chat)
}
}
.navigationBarTitle("Chats")
}
}
}
预览如下:
这是我希望隐藏 "default" 后退按钮的视图的代码:
import SwiftUI
struct ChatView: View {
var chat: Chat
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
@State var name: String = "Some text"
fileprivate var backButton: some View {
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Image(systemName: "chevron.left")
})
}
var body: some View {
NavigationView {
VStack(alignment: .leading, spacing: 0) {
Spacer()
TextField("Name's placeholder", text: $name)
.clipShape(Rectangle())
.overlay(Rectangle().stroke(Color("lightgray"), lineWidth: 2))
.lineLimit(5)
}
.navigationBarBackButtonHidden(true)
.navigationBarItems(leading: backButton)
.navigationBarTitle("\(chat.id)", displayMode: .inline)
}
}
}
但是,当单击第一个屏幕截图中的列表项时,我得到的是:
“<聊天”后退按钮仍然存在。
我通过将列表的代码更新为:
设法隐藏了它
NavigationLink(destination: ChatView(chat: chat).navigationBarBackButtonHidden(true)) {
ChatRow(chat: chat)
}
然而,顶部和下一个视图的标题之间仍然存在巨大差距:
一个导航栈上应该只有一个NavigationView
,所以
struct ChatView: View {
...
var body: some View {
NavigationView { // << NavigationView not needed here !!!
删除标记的导航视图并且应该可以工作。
测试 Xcode 11.2,iOS 13.2
navigationBarBackButtonHidden
修饰符有问题。它不会隐藏导航后退按钮...
这是列表的源代码:
import SwiftUI
struct ContentView: View {
@State var showSheet = false
var body: some View {
NavigationView {
List(chatsData, id: \.self.id) { chat in
NavigationLink(destination: ChatView(chat: chat)) {
ChatRow(chat: chat)
}
}
.navigationBarTitle("Chats")
}
}
}
预览如下:
这是我希望隐藏 "default" 后退按钮的视图的代码:
import SwiftUI
struct ChatView: View {
var chat: Chat
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
@State var name: String = "Some text"
fileprivate var backButton: some View {
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Image(systemName: "chevron.left")
})
}
var body: some View {
NavigationView {
VStack(alignment: .leading, spacing: 0) {
Spacer()
TextField("Name's placeholder", text: $name)
.clipShape(Rectangle())
.overlay(Rectangle().stroke(Color("lightgray"), lineWidth: 2))
.lineLimit(5)
}
.navigationBarBackButtonHidden(true)
.navigationBarItems(leading: backButton)
.navigationBarTitle("\(chat.id)", displayMode: .inline)
}
}
}
但是,当单击第一个屏幕截图中的列表项时,我得到的是:
“<聊天”后退按钮仍然存在。
我通过将列表的代码更新为:
设法隐藏了它NavigationLink(destination: ChatView(chat: chat).navigationBarBackButtonHidden(true)) {
ChatRow(chat: chat)
}
然而,顶部和下一个视图的标题之间仍然存在巨大差距:
一个导航栈上应该只有一个NavigationView
,所以
struct ChatView: View {
...
var body: some View {
NavigationView { // << NavigationView not needed here !!!
删除标记的导航视图并且应该可以工作。
测试 Xcode 11.2,iOS 13.2