Потяните для refre sh, проблема перемещения и удаления действия больше не работает - PullRequest
0 голосов
/ 05 апреля 2020

чтобы реализовать функцию «1023» в моем приложении, я обертываю функцию из uiKit, и она прекрасно работает.

Теперь моя проблема в том, что я реализую эту функцию для обновления sh кнопка редактирования списка больше не работает. Я больше не могу перетащить, чтобы переместить элемент списка, и я не могу изменить, чтобы удалить, я могу только провести пальцем, чтобы удалить.

У меня есть вызов списка ListMainView

здесь код

struct ListMainView: View {

     @ObservedObject var dm: DataManager

    var body: some View {


       ZStack(alignment: .leading) {

           List{
               ForEach(self.dm.storage){ item in

                Text(item.airportData.aptICAO)
               }
               .onDelete(perform: delete)
               .onMove(perform: move)
           }
       }
    }

    func move(from source : IndexSet, to destination: Int){
        dm.storage.move(fromOffsets: source, toOffset: destination)
    }
    func delete(at offset: IndexSet) {
        dm.storage.remove(atOffsets: offset)
    }

}

Теперь я передаю это представление, чтобы создать CustomScrollView для переноса из UIkit функции вытягивания для обновления sh:

struct CustomScrollView : UIViewRepresentable {
    @ObservedObject var dm: DataManager
    let general: GenAirportModel

    @Binding var isDiplayTheButtonINLIST : Bool

    var width : CGFloat, height : CGFloat


    func makeCoordinator() -> Coordinator {
        Coordinator(self, model: dm)
    }

    func makeUIView(context: Context) -> UIScrollView {
        let control = UIScrollView()
        control.refreshControl = UIRefreshControl()
        control.refreshControl?.addTarget(context.coordinator, action:
            #selector(Coordinator.handleRefreshControl),
                                          for: .valueChanged)

        let childView = UIHostingController(rootView: ListMainView(dm: self.dm, general: self.general, isDiplayTheButtonINLIST: $isDiplayTheButtonINLIST))

        childView.view.frame = CGRect(x: 0, y: 0, width: width, height: height)

        control.addSubview(childView.view)
        return control
    }


    func updateUIView(_ uiView: UIScrollView, context: Context) {}

    class Coordinator: NSObject {
        var control: CustomScrollView
        var dm : DataManager

        init(_ control: CustomScrollView, model: DataManager) {
            self.control = control
            self.dm = model
        }

        @objc func handleRefreshControl(sender: UIRefreshControl) {
            debugPrint("START REFRESH")
            dm.refreshall()

            sender.endRefreshing()


        }
    }
}

Теперь, если я использую свой ListMainView - функция редактирования, перемещение, работа в режиме delate, работают отлично ... если я использую CustomScrollView, если я нажимаю кнопку Edit, отмечая работу ... Я имею в виду, что я не могу переместить свой элемент в списке.

Я прикрепляю изображение то, что я хотел бы случиться, даже используя мой CustomScrollView.

picture with edit working

я что-то пропускаю, когда оборачиваю свой взгляд из UIkit?

...