ios - SwiftUI navigationBarBackButtonHidden 未按预期工作
问题描述
我的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")
}
}
}
这是我希望隐藏“默认”后退按钮的视图的代码:
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)
}
}
}
“< Chats”后退按钮仍然存在。
我设法通过将列表的代码更新为:
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 测试
推荐阅读
- node.js - 节点js中的可交换rsa
- python - 有没有办法在 OWA 找到含硒的物品?
- javascript - 我在理解 $("button").click() 和 $("button")[0].click() 的不同行为时遇到问题
- jmeter - HTTP 请求中文件协议的使用
- npm - npm - 修复 package-lock.json 中易受攻击的依赖项
- java - Cloud SQL 和 App Engine 之间的连接超时
- reactjs - Formik 重置错误
- python - 如何重塑文本数据以适合 keras 中的 LSTM 模型
- php - Laravel 5.8 公用文件夹重定向到“/索引”页面
- sorting - 如何根据谷歌应用脚本中的电子表格日期发送电子邮件?