gpt4 book ai didi

swift - 将分段样式选择器添加到SwiftUI的NavigationView中

转载 作者:行者123 更新时间:2023-12-04 06:40:34 25 4
gpt4 key购买 nike

问题很简单,就像标题中一样。我正在尝试将Picker样式的SegmentedPickerStyle放入NavigationBar中的SwiftUI中。就像本地Phone应用程序的历史记录页面一样。图片在下面

enter image description here

我一直在寻找Google和Github作为示例项目,库或任何教程,但是没有运气。我认为,如果nativa应用程序和WhatsApp例如拥有它,那么它应该是可能的。任何帮助,将不胜感激。

最佳答案

您可以将Picker直接放入.navigationBarItems中。

enter image description here

我遇到的唯一麻烦是使选择器居中。 (只是为了证明Picker确实可以在导航栏中,我使用框架和Geometry Reader组合了一种骇人听闻的解决方案。您需要找到一种适当的居中解决方案。)

struct ContentView: View {
@State private var choices = ["All", "Missed"]
@State private var choice = 0

@State private var contacts = [("Anna Lisa Moreno", "9:40 AM"), ("Justin Shumaker", "9:35 AM")]

var body: some View {
GeometryReader { geometry in
NavigationView {
List {
ForEach(self.contacts, id: \.self.0) { (contact, time) in
ContactView(name: contact, time: time)
}
.onDelete(perform: self.deleteItems)
}
.navigationBarTitle("Recents")
.navigationBarItems(
leading:
HStack {
Button("Clear") {
// do stuff
}
Picker(selection: self.$choice, label: Text("Pick One")) {
ForEach(0 ..< self.choices.count) {
Text(self.choices[$0])
}
}
.frame(width: 130)
.pickerStyle(SegmentedPickerStyle())
.padding(.leading, (geometry.size.width / 2.0) - 130)
},
trailing: EditButton())
}
}
}

func deleteItems(at offsets: IndexSet) {
contacts.remove(atOffsets: offsets)
}

}

struct ContactView: View {
var name: String
var time: String

var body: some View {
HStack {
VStack {
Image(systemName: "phone.fill.arrow.up.right")
.font(.headline)
.foregroundColor(.secondary)
Text("")
}
VStack(alignment: .leading) {
Text(self.name)
.font(.headline)
Text("iPhone")
.foregroundColor(.secondary)
}
Spacer()
Text(self.time)
.foregroundColor(.secondary)
}
}
}

关于swift - 将分段样式选择器添加到SwiftUI的NavigationView中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60031681/

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