UIRefreshControl 和 UiTableview 内容插入

1 refresh ios swift

UIRefresherControl在 a 中使用时UITableView,当表视图的内容插入为 0 时,一切正常,并且在拉起时开始刷新,并且滚动视图的内容偏移量达到大约-200。

但是,当我将内容插入设置UITableView为-176(我需要这样做)时,当我拉到-376时,刷新仍然没有开始。启用或禁用“调整滚动视图插图”设置不会进行任何更改。我能做什么,我还应该UIRefresherControl以某种方式更改任何内容插入值吗?或者当您更改 的内容插图时它不会自动调整吗UITableView?

var refresher:UIRefreshControl!

override func viewDidLoad() {
super.viewDidLoad()

refresher = UIRefreshControl()
refresher.tintColor = UIColor.blackColor()
refresher.addTarget(self, action: "refresh", forControlEvents:    UIControlEvents.ValueChanged)
self.resultsTable.addSubview(refresher)

 }


  func refresh() {

  print("refresh table")

  refreshTable()

  }
Run Code Online (Sandbox Code Playgroud)

小智 5

我有类似的问题。动态更改 tableview 的内容插入会扰乱刷新控件。

根本原因是刷新控件改变了内容偏移量,进而调用scrollViewDidScroll(这是内容插入被重置的地方)

解决方案 1. 如果您只设置内容插入一次(因此当控制器加载时),请通过情节提要进行设置。

解决方案2.如果在滚动视图委托方法期间需要动态设置内容插入。尝试这样的事情:

func scrollViewDidScroll(scrollView: UIScrollView) {

    let offset = scrollView.contentOffset.y

    if offset >= -tableViewInsetHeight {

        // Change contentInset only if contentoffset is 
        // greater than the inset 
        scrollView.contentInset = UIEdgeInsetsMake(-offset, 0, 0, 0)

    }
}
Run Code Online (Sandbox Code Playgroud)