确定滚动时UITableViewController的哪些部分是可见的

时间:2015-11-25 10:29:46

标签: ios xcode uitableview swift2

我试图确定UITableView的哪个部分是可见的(在顶部,如果同时有两个部分),在swift 2中。到目前为止,我找到了这个解决方案: Is there any way to know if the user is scrolling tableview up or down? in swift IOS,这个:How to get a UITableView's visible sections?和这一个:Swift - UITableView scroll event

所有这些都不适合我,原因是:

1。我无法添加UIScrollViewDelegate,因为swift 2在冗余符合协议时出错(因为它是UITalbeView,它已经符合UIScrollView)。

2。但是,这个:

func scrollViewDidScroll () {
    print("scrolled: \(self.tableView.indexPathsForVisibleRows)")
}

永远不会推出。

UITableView的委托和数据源是通过故事板界面构建器定义的。

你如何确定在 swift 2 中滚动UITableViewController,以及哪个部分可见?

1 个答案:

答案 0 :(得分:4)

请尝试从 willDisplayCell 方法获取可见单元格,然后从此可见单元格中获取部分。 例如: 首先从Cell获取Indexpath,然后从Indexpath获取部分。

让section = indexPath.section

代码是:

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("CustomCell") as! CustomCellViewController

    let position: CGPoint = cell.convertPoint(CGPointZero, toView: self.tableView)
    if let indexPath = self.tableView.indexPathForRowAtPoint(position)
    {
        let section = indexPath.section
        print("will display section: \(section)")
    }
}