【问题标题】:refreshControl with programatic UITableView without UITableViewControllerrefreshControl 与程序化 UITableView 没有 UITableViewController
【发布时间】:2014-11-22 04:06:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift refresh tableview


    【解决方案1】:

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

    //1:将实例变量添加到您的 ViewController。

    let refreshControl = UIRefreshControl()

    //2: 在 vi​​ewDidLoad() 中设置你的刷新控件

    refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
    refreshControl.addTarget(self, action: "refresh", 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()
     }
    

    对代码的注释:

    1. 您不必再使用分号 :-)。

    2. 刷新控件和刷新控件选择器不能同名(即action: "refresh")。

    3. 没有“self.refreshControl = refresh;”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2012-05-04
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多