UIRefreshControl和UITableView的backgroundVIew

时间:2013-09-19 19:16:21

标签: ios uirefreshcontrol

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

我做错了吗?

4 个答案:

答案 0 :(得分:87)

此行为的原因是,在iOS 7中,UITableView的{​​{1}}被绘制在backgroundView之上。不确定这是设计还是问题,但这是一个解决方法,为我修复它:

UIRefreshControl

此代码用于设置 self.tableView.backgroundView.layer.zPosition -= 1; 属性的位置。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

似乎UITableViewController在重新加载期间(在它的“backgroundView”之后)将其UIRefreshControl推回到0索引,无论你把它放在什么索引的第一位。这对我有用(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)

答案 3 :(得分:-2)

通过不使用UITableViewController上的self.refreshControl属性可以轻松解决此问题,而是为它创建自己的属性,它可以正常工作。