SwiftUI не выполняет onInsert, когда список пуст? - PullRequest
0 голосов
/ 04 апреля 2020

У меня 2 списка в пользовательском интерфейсе, 1 список позволяет пользователю перетаскивать его в другой список. У меня проблема, когда «список выбранных товаров» пуст. Он не выполняет функцию .onInsert.

Нет проблем, когда массив «selectedProduct» не пуст во время рендеринга.
Как я могу позволить пользователю перетаскивать, когда другой список полностью пуст?

List(selection: $selection)
{
     HStack(alignment: .center)
     {
       Spacer().frame(width: 200)
       Text("Product Name")
           .foregroundColor(blue)
           .lineLimit(1)
       Spacer()
       Text("Price")
           .foregroundColor(blue)
       Spacer()
       Text("Unit")
            .foregroundColor(blue)
       Spacer()
      }

   ForEach(selectedProduct, id:\.id)
   {
       rider in
       SelectedProductView()    
   }
   .onInsert(of: ["public.data"])
   {
       self.addProduct(position: $0, itemProviders: $1, top: true)
   }
}

1 Ответ

0 голосов
/ 04 апреля 2020

.onInsert работает на DynamicViewContent, поэтому, когда ваш selectedProduct пуст, контент отсутствует, поэтому вставлять некуда.

Есть две возможности, как я вижу, чтобы решить эту ситуацию:

1) реализовать поддержку перетаскивания в List и сделать ее активной, когда selectedProduct пусто, чтобы сделать возможным add первый элемент в динамическом c контенте

2) реализовать заглушку product-item (например, пустую строку с текстом «drop here»), который явно добавляется в selectedProduct, когда он становится пустым из реальные продукты, что делает контент не пустым, чтобы стандартная .onInsert работала для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...