jpl*_*ano 5 xcode ios uirefreshcontrol swift
出于某种原因,第一次加载视图控制器时,刷新控件的行为与预期一致(它在向下滑动时显示在tableview下).问题是当我点击另一个选项卡,然后返回到视图控制器时,刷新控件不再淡入,并且在tableview顶部可见.
这是代码的一部分:
class CoreTableViewController : UIViewController, UITableViewDataSource, UITableViewDelegate {
var tableView:UITableView!
var tableData:Array<AnyObject> = []
var dataFetched:Bool = false
var refreshControl:UIRefreshControl?
override func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = UIRectEdge.None;
self.tableView = self.assignTableView()
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
if self.enableRefresher() {
self.setRefreshControl()
}
}
func enableRefresher() -> Bool {
return true
}
func fetchData(cleanFirst:Bool = false) {
// Fetch data.
}
func refresh() {
self.fetchData(true)
self.refreshControl!.endRefreshing()
}
func setRefreshControl() {
self.refreshControl = UIRefreshControl()
//self.refreshControl!.attributedTitle = NSAttributedString(string: "Actualizar")
self.refreshControl!.addTarget(self, action: #selector(CoreTableViewController.refresh), forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshControl!)
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
jpl*_*ano 10
我在这里找到了修复程序:https://stackoverflow.com/a/29088409/209200
self.tableView.addSubview(refreshControl!)应该是,而不是self.tableView.insertSubview(refreshControl!, atIndex: 0).
这导致refres控件出现在tableview上.
尝试将 z 索引设置为 -1,这意味着 UIRefreshControl 位于任何视图之后。
refreshControl.layer.zPosition = -1
Run Code Online (Sandbox Code Playgroud)
和
tableView.refreshControl?.beginRefreshing()
Run Code Online (Sandbox Code Playgroud)
self.tableView.refreshControl?.endRefreshing()
Run Code Online (Sandbox Code Playgroud)
两者必须成对使用。
当我检查您的代码和问题时,我认为问题出在这里:
\n\n“除了将刷新控件分配给表视图控制器\xe2\x80\x99srefreshControl属性之外,您还必须配置控件本身的目标和操作。”https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIRefreshControl_class/index.html#//apple_ref/occ/instm/UIRefreshControl/endRefreshing
因此,从文档来看,您需要使用 UITableViewController,而不是 UIViewController。并设置它的refreshControl属性。
\n\n在当前状态下,您只需将 UIRefreshControl 添加为常规子视图即可。
\n| 归档时间: |
|
| 查看次数: |
7575 次 |
| 最近记录: |