文档章节

Swift:V2下拉上拉模块

低绮户照无眠
 低绮户照无眠
发布于 2017/03/23 14:11
字数 446
阅读 8
收藏 0

 

 

下拉模块实现的具体代码:

override func viewDidLoad() {   
        self.view.addSubview(self.tableView)
        self.tableView.snp.makeConstraints { (make) in
            make.edges.equalTo(self.view)
        }
        
        self.tableView.mj_header = V2RefreshHeader.init(refreshingBlock: {
            //下拉事假触发后,会执行这里
            self.refresh()
        })
        
//代码触发下拉事件(也可以通过手势下拉)
        self.tableView.mj_header.beginRefreshing()
}

注意,V2RefreshHeader是自定义的Header对象,也可以是用系统默认的MJRefreshNormalHeader

header回调闭包里的代码:

    func refresh() {
        //传入参数都是函数默认参数
        TopicListModel.getTopicList { (response) in
            //1.获取数据,更新tableView
            self.topicList = response.value
            self.tableView.reloadData()
            
            /**
             2.判断标签是否能加载下一页,不能就提示
             说明:为什么这段代码放在header的回调里。因为每当我们手动下拉,或者代码调用下拉后,会执行header回调,那么每次都要判断节点是不是翻页的功能
             */
            let refreshFooter = self.tableView.mj_footer as! V2RefreshFooter
            if self.tab == nil || self.tab == "all" {
                refreshFooter.noMoreDataStateString = nil
                refreshFooter.resetNoMoreData()
            }
            else{
                refreshFooter.noMoreDataStateString = "没有更多帖子了,只有【All】标签能翻页"
                refreshFooter.endRefreshingWithNoMoreData()
            }
            
            //3.重置page
            self.currentPage = 0
            
            self.tableView.mj_header.endRefreshing()
        }
    }
    

 

 

上拉添加更多模块代码:

        self.view.addSubview(self.tableView)
        self.tableView.snp.makeConstraints { (make) in
            make.edges.equalTo(self.view)
        }
        let footer = V2RefreshFooter(refreshingBlock: {
           self.getNextPage()
        })
        footer?.centerOffset = -4
        self.tableView.mj_footer = footer

这里的V2RefreshFooter也是自定义的footer。

 

footer闭包代码:

    func getNextPage() {
        //1.点击某个节点后,下拉刷新结果是每有数据,那么上拉是没有意义的。
        if let count = self.topicList?.count, count <= 0 {
            self.tableView.mj_footer.endRefreshing()
            return;
        }
        
        //2.一般默认下拉获取数据时,传入的currentPage是0,那么获取第二页内容,传入的currentPage是1.
         self.currentPage += 1
        TopicListModel.getTopicList(tab: tab, page: self.currentPage) { (response:V2ValueResponse<[TopicListModel]>) in
            if response.success {
                //3.获取的数据如果是空,表示全部获取,代码不会进入if
                if let count = response.value?.count, count > 0 {
                    //4.注意这里用的是数组的拼接,这样可以实现主页的下拉样式,而不是翻页样式
                    self.topicList! += response.value!
                    self.tableView.reloadData()
                }
            }
            else{
                //5.获取失败。
                self.currentPage -= 1
            }
        }
        //6.停止刷新
        self.tableView.mj_footer.endRefreshing()
    }

 

© 著作权归作者所有

上一篇: Swfit:Cell自适应
下一篇: Swift:V2登录模块
低绮户照无眠
粉丝 1
博文 6
码字总数 3409
作品 0
私信 提问
Swift 项目中可能用到的第三方框架

下拉刷新 BreakOutToRefresh 一个下拉刷新打砖块的swift库 SDRefreshView 简单易用的上拉和下拉刷新 ZLSwiftRefresh - 下拉刷新/上拉加载更多,支持自定义动画,集成简单 GearRefreshControl...

SimonXun
2016/05/11
94
0
基于MVVM 的IOS开发框架--EasyIOS

Swift版本最新发布: https://github.com/EasyIOS/EasyIOS-Swift 全新基于MVVM(Model-View-ViewModel)编程模式架构,开启EasyIOS开发函数式编程新篇章。 EasyIOS 2.0类似AngularJs,最为核心...

墨水
2014/07/18
18.2K
6
iOS 开发框架--EasyIOS-Swift

EasyIOS 开源至今已经1周年,全新Swift版本今日发布,支持利用HTML来开发IOS应用,支持模拟器实时预览,基于MVVM思想,HTML数据绑定,反射所有 CocoaTouch API。 EasyIOS 再一次加速 IOS 开发...

墨水
2015/05/27
7.6K
0
仿开眼App - Swift3.0

最近一直在学习Swift,平时比较喜欢看短视频之类的,于是就仿写了开眼,加强自己对Swift的掌握。在这个工程中,主要分为四个部分,分别是精选模块,发现模块,关注模块和我的模块,由于有些数...

小时候De_我
2017/05/24
0
0
ionic 学习之 上拉菜单、背景层、下拉列表

简介 这一篇是我开始学习ionic JavaScript 部分的第一篇,所以已经做好了踩坑的准备,而且可能会遇到很多不懂的地方,所以随手注释,笔记会凌乱些。而且此前没有学angularjs,所以也会补充些...

邪人君子
2018/01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.5K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部