我试图确定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,以及哪个部分可见?
答案 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)")
}
}