Проблема выбора стиля навигационной ссылки SwiftUI

1
7

Я работаю над небольшим проектом приложения 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"))
    ....
  }
}
Анжелика
Вопрос задан28 февраля 2024 г.

1 Ответ

2
Мариан
Ответ получен7 сентября 2024 г.

Ваш ответ

Загрузить файл.