美文网首页
UITableView+在顶端固定的SegmentedContr

UITableView+在顶端固定的SegmentedContr

作者: 泥塔猫 | 来源:发表于2016-05-29 23:30 被阅读303次

    问题:如何在屏幕向上滑动的时候,让两个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+在顶端固定的SegmentedContr

          本文链接:https://www.haomeiwen.com/subject/ehvqdttx.html