我有一个 UITableViewController,我在其上设置了一个 backgroundView。此控制器安装了 UIRefreshControl。问题是当我设置背景视图时,刷新控件是不可见的。如果我删除背景视图,我可以看到刷新控件。
难道我做错了什么?
我有一个 UITableViewController,我在其上设置了一个 backgroundView。此控制器安装了 UIRefreshControl。问题是当我设置背景视图时,刷新控件是不可见的。如果我删除背景视图,我可以看到刷新控件。
难道我做错了什么?
这种行为的原因是在 iOS 7 中,UITableView
'sbackgroundView
被绘制在UIRefreshControl
. 不确定这是设计使然还是问题,但这是为我修复它的解决方法:
self.tableView.backgroundView.layer.zPosition -= 1;
此代码位于您设置UITableViewController refreshControl
属性的位置。
您可以尝试将背景发送到后面或将刷新控件发送到前面。刷新控件很可能只是位于索引 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)
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.