Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 带有可编程UITableView的refreshControl,不带UITableView控制器_Swift_Refresh_Tableview - Fatal编程技术网

Swift 带有可编程UITableView的refreshControl,不带UITableView控制器

Swift 带有可编程UITableView的refreshControl,不带UITableView控制器,swift,refresh,tableview,Swift,Refresh,Tableview,我以编程方式创建了UITableView实例,并将其作为子视图添加到根视图中。我还以编程方式为表视图实例设置委托和数据源。因此,此表视图没有表视图控制器。现在我想让表视图能够下拉刷新。我从谷歌那里学到了一些代码,比如: var refresh = UIRefreshControl(); refresh.attributedTitle = NSAttributedString(string: "Pull to refresh"); refresh.addTarget(self, action: "

我以编程方式创建了UITableView实例,并将其作为子视图添加到根视图中。我还以编程方式为表视图实例设置委托和数据源。因此,此表视图没有表视图控制器。现在我想让表视图能够下拉刷新。我从谷歌那里学到了一些代码,比如:

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, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)
//3:和(仍在viewDidLoad()中)将其作为子视图添加到tableView(UITableView)

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

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

dispatch_async(dispatch_get_main_queue()) {
   self.tableView.reloadData()
   self.refreshControl.endRefreshing()
 }
对代码的备注:

  • 您不必再使用分号:-)

  • 刷新控件和刷新控件选择器不能具有相同的名称(即操作:“刷新”)

  • 没有“self.refreshControl=refresh;”

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