gpt4 book ai didi

SwiftUI 可编辑导航标题

转载 作者:行者123 更新时间:2023-12-04 07:41:04 27 4
gpt4 key购买 nike

是否可以使 SwiftUI 的导航标题可编辑?
不幸的是navigationTitle修饰符只接受 Text View 而不是 TextField意见。
我想这样做而不是仅仅使用导航栏下方的文本字段,因为我仍然希望当用户向下滚动并且导航栏为导航标题分配空间时,将修改后的标题内联显示在导航栏中的良好默认行为不管你是否定义了一个。

最佳答案

您可以通过指定 ToolbarItem 将自定义 View 放置在您的 NavigationView 中标题可能出现的位置。展示位置值为 .principal ,例如在下面的代码中。我添加了 RoundedBorderTextFieldStyle使文本字段更明显:

struct EditableTitleView: View {
@State private var editableTitle: String = "My Title"
var body: some View {
NavigationView {
Text("View with editable title")
.toolbar {
ToolbarItem(placement: .principal) {
TextField("Title", text: $editableTitle)
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}
}
}
}
Screen grab of sample TextField in title bar
请注意,如果您还添加了 navigationTitle修改器进入您的 View ,它在 iOS 上的默认大样式仍将显示在工具栏下方,但如果它滚出页面,它会消失,而您的主要项目将保留在屏幕上。如果您设置 .navigationBarTitleDisplayMode(.inline)那么较大的样式标题将永远不会显示。
我提到这一点是因为无论如何你都应该考虑为你的 View 保留一个标题,原因有几个:
  • 如果 NavigationLink将 View 插入堆栈,您希望在后退按钮和长按时出现的堆栈 View 列表中出现一个有意义的名称。
  • 当你有一个没有标题的导航 subview 时,我没有检查 VoiceOver 会发生什么。您覆盖原生行为的次数越多,您就越需要考虑您的应用是否比 SwiftUI 默认提供的更不易访问。
  • 关于SwiftUI 可编辑导航标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67461165/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com