【问题标题】:UIRefreshControl Not AppearingUIRefreshControl 没有出现
【发布时间】:2018-04-11 00:29:50
【问题描述】:

我的 UIViewController 中有一个 UITableView。我正在尝试设置 UIRefreshControl 拉刷新功能。下面是我的代码。

// Within Class Itself
lazy var refreshControl: UIRefreshControl = {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action:
        #selector(MainViewController.refreshData),
                             for: .valueChanged)
    refreshControl.tintColor = UIColor.darkGray

    return refreshControl
}()

// Within viewDidLoad
if #available(iOS 10.0, *) {
    myTableView.refreshControl = refreshControl
} else {
    myTableView.addSubview(refreshControl)
}

但是每当我尝试在模拟器中运行它并在表格视图上向下拖动时,什么都没有发生,也没有任何显示。这就像拉动刷新的东西没有被添加到表格视图中。

我该如何解决这个问题?

【问题讨论】:

  • 哪个函数包含if语句?
  • @Paulw11 viewDidLoad
  • 代码对我来说看起来不错,同样的事情也在我的模拟器中工作。在 iOS 9 和 iOS 10+ 上都试过
  • 我在 iOS 11 上尝试过的相同代码也适用于我。
  • 我可以知道你为什么要进行延迟初始化吗?

标签: ios uitableview pull-to-refresh


【解决方案1】:

据我了解,这是因为您已使用延迟初始化声明了 refreshControl。而且您正在从外部向 tableview 添加 refreshControl。

Lazy 会延迟你的 refreshControl 初始化,但是在这之前,refreshControl 会被添加到 tableview 中,但是这里 refreshControl 是空的。所以它不起作用。

尝试删除惰性和直接初始化(如下所示)。我希望它会工作。

    var refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action:
        #selector(MainViewController.refreshData),
                             for: .valueChanged)
    refreshControl.tintColor = UIColor.darkGray

// Within viewDidLoad
if #available(iOS 10.0, *) {
    myTableView.refreshControl = refreshControl
} else {
    myTableView.addSubview(refreshControl)
}

【讨论】:

  • 你没有忘记将你的tableview 属性与storyboard tableview 连接起来吗?请仔细检查。否则不可能有任何故障。
  • 我刚刚建立了一个演示项目,它运行良好。我想知道它是否与SwipeCellKit有关。
  • 可以,你应该通过添加 SwipeCellKit 再次检查演示项目。
猜你喜欢
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多