UITableView+在顶端固定的SegmentedControl

UITableView+在顶端固定的SegmentedControl_第1张图片

问题:如何在屏幕向上滑动的时候,让两个Segment能固定在屏幕顶端。

网上找了一天没找到,自己也想过很多种方案(用tableView+scrollView实现)发现最终体验都很差。然后突然发现,只需要用tableView就够了。

即Header作为tableView的tableHeaderView,segment作为tableView第一个section的header,cell作为tableView第一个section的cell。


1.先在一个ViewController上做一个UITableView,并做好代理

let tableView = UITableView(frame:CGRectMake(0,0,self.view.frame.width,self.view.frame.height), style: UITableViewStyle.Plain)

tableView.dataSource = self

tableView.delegate = self

self.view.addSubview(tableView)

2.把图上的Header区域放在tableHeaderView

let Header = UIView(frame: CGRectMake(0,0,self.view.frame.width,self.view.frame.height))

tableView.tableHeaderView = Header

3.接下来的工作就是在协议里了

func numberOfSectionsInTableView(tableView: UITableView) -> Int {

return 1

}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return 1

}

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

//这个viewForSegment暂时替代那两个segment

let viewForSegment = UIView(frame: CGRectMake(0,0,self.view.frame.width,50))

view.backgroundColor = UIColor.orangeColor()

return view

}

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

return "标题\(section)"

}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

return 500

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

//这是剩下的那些cells,cell自己定制

let cell = UITableViewCell(reuseIdentifier: "Module_4Cell")

return cell

}


到这里就完成了,主要利用了tableView的section的header会固定在顶端这个特性。

你可能感兴趣的:(UITableView+在顶端固定的SegmentedControl)