iOS表视图错误 - 在键值观察者仍在其中注册时解除分配 - DGElasticPullToRefresh

时间:2017-02-25 23:40:45

标签: ios iphone swift uitableview uiviewcontroller

所以我有两个UIViewControllers,每个都有一个表视图。第一个有一个按钮来显示第二个视图控制器。第二个视图控制器有一个按钮,它取消视图控制器,使其返回到第一个视图控制器。当我单击第二个视图控制器中的“关闭”按钮时,它会短暂地返回到第一个视图控制器,然后崩溃。控制台打印以下错误消息。

An instance of class UIScrollViewPanGestureRecognizer was deallocated while key value observers were still registered with it

我不确定从哪里开始查看,因为我不确定问题的所在部分。我之前从未遇到此错误,但它没有任何意义因为我没有使用任何UIScrollViewPanGestureRecognizer。我甚至都不知道任何observers我正在使用。

我使用以下代码展示视图。

let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let menuViewController : UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "Menu") as UIViewController
self.present(menuViewController, animated: false, completion: nil)

使用以下代码解除视图控制器。

self.dismiss(animated: false, completion: {});

这个错误是什么意思?会导致什么呢?我在堆栈溢出时看到的所有答案都使用了代码,我甚至没有任何相似的东西,这就是为什么我非常困惑。

我非常肯定根据我的研究,它与我的一个表格视图有关,但我可能完全错了。

1 个答案:

答案 0 :(得分:8)

在做了一些研究之后,我发现将以下代码添加到我的第二个视图控制器中解决了这个问题。

deinit {
    self.tableView.dg_removePullToRefresh()
}

这是因为我使用库(DGElasticPullToRefresh)来处理pull to refresh。有关此问题的GitHub问题可以在here找到。希望这有助于其他人遇到类似的问题或类似问题。