我想简单地在SwiftUI中添加一个日期picker到导航栏,这是我的代码:
struct ContentView: View {
@State var selectedDate: Date = Date()
var body: some View {
NavigationView {
VStack {
Text("Hello, world!")
}
.navigationBarItems(
leading: DatePicker(selection: $selectedDate, displayedComponents: .date) {}
)
}
}
}
这在iOS上工作得很好,但在iPad模拟器上,当我点击日期选择器时,什么也没有发生控制台打印一些布局约束错误和这个:
UIDatePicker 0x7fc3511141d0被布置在其最小宽度以下280股。这可能看起来不像预期的那样,特别是对于大于正常字体。
看起来导航栏的前导位置被侧边栏按钮占用了。作为.navigationBarItems
的替代方案,您可以使用toolbar
并指定placement
:
struct ContentView: View {
@State var selectedDate = Date()
var body: some View {
NavigationView {
VStack {
Text("Hello, world!")
}
.toolbar {
ToolbarItem(placement: .principal) {
DatePicker(selection: $selectedDate, displayedComponents: .date) {}
}
}
}
}
}
注意:我使用.principal
放置,因为似乎没有足够的空间来渲染DatePicker
作为.navigationBarLeading
。但是,请随意尝试其他位置。