加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 使用没有UITableViewController的程序化UITableView的r

发布时间:2020-12-14 04:45:10 所属栏目:百科 来源:网络整理
导读:我以编程方式创建了我的UITableView实例,并将其作为子视图添加到根视图中.我还以编程方式为表视图实例设置了delegate和dataSource.所以这个表视图没有表视图控制器.现在我想让表视图能够下拉刷新.我从Google那里学到了一些代码,如下所示: var refresh = UIR
我以编程方式创建了我的UITableView实例,并将其作为子视图添加到根视图中.我还以编程方式为表视图实例设置了delegate和dataSource.所以这个表视图没有表视图控制器.现在我想让表视图能够下拉刷新.我从Google那里学到了一些代码,如下所示:

var refresh = UIRefreshControl();
refresh.attributedTitle = NSAttributedString(string: "Pull to refresh");
refresh.addTarget(self,action: "refresh",forControlEvents:.ValueChanged);
self.refreshControl = refresh;

现在,问题是self指向表视图控制器.但是,在这种情况下,我没有表视图控制器.那么我是否必须创建一个表视图控制器才能实现下拉刷新功能?

解决方法

您可以通过以下方式执行此操作:

// 1:向ViewController添加实例变量.

let refreshControl = UIRefreshControl()

// 2:在viewDidLoad()中设置刷新控件

refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl.addTarget(self,forControlEvents: UIControlEvents.ValueChanged)

// 3:并且(仍然在viewDidLoad()中)将它作为子视图添加到tableView(UITableView)

tableView.addSubview(refreshControl)

// 4:最后,在你的refresh()函数中:不要忘记结束此控件的刷新.

refreshControl.endRefreshing()

//请注意,这个(刷新结束)必须在主队列上完成! – 如果你不在那里在这种情况下,您可能会使用以下内容:

dispatch_async(dispatch_get_main_queue()) {
   self.tableView.reloadData()
   self.refreshControl.endRefreshing()
 }

备注你的代码:

>您不必再使用分号:-).>刷新控件和刷新控件选择器不能具有相同的名称(即操作:“刷新”).>没有“self.refreshControl = refresh;”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读