30

我有一个 UITableViewController,我在其上设置了一个 backgroundView。此控制器安装了 UIRefreshControl。问题是当我设置背景视图时,刷新控件是不可见的。如果我删除背景视图,我可以看到刷新控件。

难道我做错了什么?

4

4 回答 4

88

这种行为的原因是在 iOS 7 中,UITableView'sbackgroundView被绘制在UIRefreshControl. 不确定这是设计使然还是问题,但这是为我修复它的解决方法:

   self.tableView.backgroundView.layer.zPosition -= 1;

此代码位于您设置UITableViewController refreshControl属性的位置。

于 2013-09-20T01:38:41.700 回答
0

您可以尝试将背景发送到后面或将刷新控件发送到前面。刷新控件很可能只是位于索引 0 处。

于 2013-09-19T19:40:22.093 回答
0

似乎 UITableViewController 在重新加载期间将其 UIRefreshControl 推回 0 索引(在其“backgroundView”之后),无论您首先将它放在什么索引。这对我有用(iOS 9):在 IB 中禁用刷新。在代码中创建UIRefreshControl,设置好backgroundView后添加到tableView中:

    let someView = UIView()

    self.tableView.backgroundView = someView

    let refreshControl = UIRefreshControl()

    refreshControl.addTarget(self, action: #selector(MyTableViewController.refresh(_:)), forControlEvents: .ValueChanged)

    self.tableView.insertSubview(refreshControl, atIndex: 1)
于 2016-05-05T00:20:51.347 回答
-2

This issue is easily fixed by not using the self.refreshControl property on the UITableViewController, instead create you own property for it and it will work just fine.

于 2017-02-15T14:24:23.677 回答