【问题标题】:Pull-to-refresh does not work on empty TableView下拉刷新对空的 TableView 不起作用
【发布时间】:2016-01-15 11:33:02
【问题描述】:

当我从数据源中清除所有数据并重新加载 tableView 时,下拉刷新不再可用。即使在空的 tableView 上,我如何也可以启用 pull-to-refresh?

override func viewDidLoad() {
    super.viewDidLoad()
    ...
    // Pull to refresh for iPhone
    refreshControl?.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)

    tableView.tableFooterView = UIView(frame: CGRectZero) // To remove separator line on empty cells
    tableView.estimatedRowHeight = Constants.DetailTableView.estimatedRowHeight
    tableView.rowHeight = UITableViewAutomaticDimension

    setupRefreshControl()
}

private func setupRefreshControl() {
    // If on iPhone, List becomes the pull-to-refresh handler and the delegate
    if UIScreen.mainScreen().traitCollection.horizontalSizeClass == .Compact {
        SyncService.shared.delegate = self
        refreshControl?.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
        refreshControl?.tintColor = UIColor.whiteColor()
    } else {
        // Otherwise disable the refresh control in List
        refreshControl = nil
    }
}

【问题讨论】:

  • 你的 refresh() 函数在哪里?
  • 如果你的数据是空的,你是否隐藏了tableview
  • 刷新控制是在storyboard里设置的,忘了说了。如果细胞存在,它会很好地工作。如果它是空的,我不会隐藏 tableview。我只是通常每次都重新加载数据。
  • 显示您正在刷新/获取数据的代码。
  • @the_UB:已解决,感谢您为我指明正确的方向。在表刷新功能中,我实际上有代码显示一些“空表”视图以提醒用户表视图为空,并且该视图位于表视图的视图之上,因此阻止了交互。我修复了视图的图层,现在它可以工作了。非常感谢。

标签: ios swift uitableview uirefreshcontrol


【解决方案1】:

就我而言,我只需要启用弹跳:

self.collectionView.alwaysBounceVertical = YES;

默认编号。如果 YES 并且弹跳为 YES,即使内容小于边界,也允许垂直拖动

【讨论】:

    【解决方案2】:

    在表格刷新功能中,我实际上有代码显示一些“空表格”视图以提醒用户表格视图是空的,并且该视图位于表格视图的视图之上,因此阻止了交互。我修复了视图的图层,现在它可以工作了。因此,如果您遇到问题中的问题,只需检查某些视图是否与您的 tableview 重叠,这就是我的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      相关资源
      最近更新 更多