Я работаю над небольшим проектом приложения todo с SwiftUI/Swift в Xcode 15.4. У меня есть такая модель:
Я создал два одинаковых экрана для пользователей, чтобы создавать и обновлять список дел. code для обоих экранов одинаков. Оба экрана включают в себя стек навигации и список с разделом, который позволяет пользователю выбирать категорию из списка с помощью селектора со стилем навигационной ссылки. Вот code:
Теперь при создании todo все работает нормально — пользователь может выбрать категорию и сохранить ее без каких-либо проблем. Однако при попытке обновить todo, выбрав новую категорию из селектора, выбор не работает.
Эта проблема, похоже, возникает только с селектором со стилем навигационной ссылки. Другие стили, такие как ".menu" и ".wheel", работают отлично, позволяя пользователю обновлять todo без каких-либо проблем.
Нужно ли что-то еще сделать, чтобы средство выбора работало со стилем навигационной ссылки? Может ли эта проблема быть связана с тем, что представление обновления запускается через навигационную ссылку?
Благодарю за любую помощь с этим. Спасибо.
@Model
class Category {
var catTitle: String = ""
var catEmoji: String = ""
var items:[toDoItem]?
init(catTitle: String = "", catEmoji: String = ""){
self.catTitle = catTitle
self.catEmoji = catEmoji
}
}
@Query private var categories: [Category]
@State var itemCategory: Category?
NavigationStack{
List {
....
//Category
Section{
Picker("\(Image(systemName: "rectangle.stack")) Category", selection: $itemCategory){
Text("No selection")
.tag(nil as Category?)
ForEach(categories, id: \.self){ category in
Text("\(category.catEmoji) \(category.catTitle)")
.tag(category as Category?)
}
}
.foregroundStyle(Color("my_accent"))
.frame(maxWidth:.infinity)
.labelsHidden()
.pickerStyle(.navigationLink)
.padding()
.overlay{
RoundedRectangle(cornerRadius: 10)
.stroke(Color(.systemGray5), lineWidth: 2)
.fill(.clear)
}
}
.padding(.top)
.listSectionSeparator(.hidden)
.listRowBackground(Color("my_accent_inverted"))
....
}
}