我需要在加载时隐藏导航栏后面的第一个单元格,并且只能在向下滚动tableview时看到。
答案 0 :(得分:0)
您可以通过在contentInset
方法中设置viewDidLoad
来隐藏导航栏后面的第一个单元格,如下所示:
self.tableView.contentInset = UIEdgeInsets(top: -44, left: 0, bottom: 0, right: 0)
之后,您可以使用scrollViewDidScroll
来检测用户是否滚动tableView
,然后您可以再次设置contentInset
一个用户向下滚动,如下面的代码所示:
override func scrollViewDidScroll(scrollView: UIScrollView) {
if (self.lastContentOffset > scrollView.contentOffset.y) {
if lastContentOffset < -55{
if !tablevieSetTo0 {
self.tableView.contentInset = UIEdgeInsets(top: 65, left: 0, bottom: 0, right: 0)
tablevieSetTo0 = true
}
}
}
self.lastContentOffset = scrollView.contentOffset.y
}
以下是完整的代码:
import UIKit
class TableViewController: UITableViewController {
let data = ["1", "2", "3", "4", "5"]
private var lastContentOffset: CGFloat = 0
var tablevieSetTo0 = false
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.contentInset = UIEdgeInsets(top: -44, left: 0, bottom: 0, right: 0)
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel?.text = data[indexPath.row]
return cell
}
override func scrollViewDidScroll(scrollView: UIScrollView) {
if (self.lastContentOffset > scrollView.contentOffset.y) {
if lastContentOffset < -55{
if !tablevieSetTo0 {
self.tableView.contentInset = UIEdgeInsets(top: 65, left: 0, bottom: 0, right: 0)
tablevieSetTo0 = true
}
}
}
self.lastContentOffset = scrollView.contentOffset.y
}
}
项目sample了解更多信息。