UIRefreshControl和UITableView的backgroundVIew

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

难道我做错了什么?

这种行为的原因是,在iOS 7中, UITableViewbackgroundView被绘制在UIRefreshControl 。 不知道这是否是由devise或问题,但这是一个解决方法,它为我修复:

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

这段代码去你设置你的UITableViewController refreshControl属性。

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

看起来,UITableViewController将其UIRefreshControl在重载期间(在其“backgroundView”之后)推回到0索引,而不pipe在哪个索引处放置它。 这是我的工作(iOS 9):禁用IB刷新。 在代码中创buildUIRefreshControl,并在设置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) 

这个问题很容易通过不使用UITableViewController上的self.refreshControl属性来解决,而是为它创build自己的属性,它将工作得很好。