代码之家  ›  专栏  ›  技术社区  ›  Duck

UI代表外部类…这可能吗?

  •  0
  • Duck  · 技术社区  · 3 年前

    我正在与UIRepresentable打交道。

    我有一部分像

    struct MyRepresentable: UIViewControllerRepresentable {
    
      func makeCoordinator() -> Coordinator {
        Coordinator(self)
      }
    
      class Coordinator: NSObject, UIScrollViewDelegate {
        var control: MyScrollView
     
        init(_ control: MyScrollView) {
            self.control = control
        }
        
        func scrollViewDidScroll(_ scrollView: UIScrollView) {
            // User is currently scrolling
        }
        
        @objc func handleRefresh(sender: UIRefreshControl) {
            sender.endRefreshing()
        }
      }
    

    问题是,这个协调器内部必须包含的东西是可怕的,很多委托功能。

    我试图将其传递到一个单独的文件中,以减少可表示文件的混乱。

    然后我创建了一个这样的新文件

    class MyExternalCoordinator:NSObject, MyDelegate {
      // here goes the monstrous code
    }
    

    然后,在我的UIViewRepresentable类中

    func makeCoordinator() -> Coordinator {
      MyExternalCoordinator()
    }
    

    我收到消息了

    无法将类型为“MyExternalCoordinator”的返回表达式转换为返回类型“MyRepresentable”。协调员'

    有什么想法吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Asperi    3 年前

    使返回类型对齐,如

      func makeCoordinator() -> MyExternalCoordinator {
        MyExternalCoordinator()
      }