Swift 调用MJRefresh刷新库

import UIKit


class ReadController: UIViewController {


    @IBOutlet weak var tableView: UITableView!

    /// 用于本地存储的key

    let ChannelKey = "ReadChannel"

    var readNewsArray: [ReadNewsModel] = [] {

        didSet {

            self.tableView.reloadData()

            // 存入本地,只存最新的20

            LocalDataTool.saveNewsList(ChannelKey, newsModelArray: Array(readNewsArray[0..<20]))

        }

    }

    

    override func viewDidLoad() {

        super.viewDidLoad()

        let headView = ReadHeadView.readHeadView()

        self.tableView.tableHeaderView = headView


        self.tableView.dataSource = self

        self.tableView.delegate = self

        self.tableView.estimatedRowHeight = 150

        self.tableView.rowHeight = UITableViewAutomaticDimension

        self.tableView.sectionHeaderHeight = 5

        self.tableView.sectionFooterHeight = 5

    //    

        //集成上拉与下拉刷新

        self.tableView.mj_header = MJRefreshNormalHeader(refreshingTarget: self, refreshingAction: #selector(ReadController.requestInfo))

        self.tableView.mj_footer = MJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction: #selector(ReadController.requestMoreInfo))

        

        //先从本地加载缓存的数据

        if let readNewsArray = LocalDataTool.getNewsList(ChannelKey) as? [ReadNewsModel] {

            self.readNewsArray = readNewsArray

        }

        self.tableView.mj_header.beginRefreshing()

    }

    

    /**

     下拉刷新回调方法

     */

    func requestInfo() {

        DataTool.loadReadNewsData { response -> Void in

            self.tableView.mj_header.endRefreshing()

            guard let modelArray = response else {

                return

            }

            self.readNewsArray = modelArray +  self.readNewsArray

        }

    }

    /**

     上拉刷新回调方法

     */

    func requestMoreInfo() {

       

        DataTool.loadReadNewsData { response -> Void in

            self.tableView.mj_footer.endRefreshing()

            guard let modelArray = response else {

                return

            }

            self.readNewsArray += modelArray

        }

    }

    

}

/




extension ReadController: UITableViewDataSource, UITableViewDelegate, CellAttributeProtocol {

    

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {

        return self.readNewsArray.count ?? 0

    }

    

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

        return 1

    }

    

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

        

        let newsModel = self.readNewsArray[indexPath.section]

        let cell = tableView.dequeueReusableCellWithIdentifier(newsModel.cellType.rawValue, forIndexPath: indexPath) as! NewsCell

        cell.newsModel = newsModel

        

        return cell

    }

    

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        

        tableView.deselectRowAtIndexPath(indexPath, animated: true)

        

        let newsModel = self.readNewsArray[indexPath.section]

        let vc = provideVcWithNewsModel(newsModel)

        vc.hidesBottomBarWhenPushed = true

        self.navigationController?.pushViewController(vc, animated: true)

        if let interactivePopGestureRecognizer = self.navigationController?.interactivePopGestureRecognizer {

            interactivePopGestureRecognizer.delegate = nil

        }

    }


}



###########################################################


Swift 调用MJRefresh刷新库

 

最新MJRefresh下载地址:https://github.com/dangxiaoyin/MJRefreshNew
代码中还实现了定时器功能、快速返回顶部功能、上拉弹窗效果、选择照片和相机拍照功能

import Foundation

import UIKit



class MyViewController: UIViewController, UITableViewDelegate,UITableViewDataSource,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UIActionSheetDelegate {

    

    let width = UIScreen.mainScreen().bounds.size.width

    let height = UIScreen.mainScreen().bounds.size.height


    let header:MJRefreshGifHeader = MJRefreshGifHeader()

    let footer:MJRefreshBackNormalFoote= MJRefreshBackNormalFooter()

    

    var timer:NSTimer?

    var timer2:NSTimer?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Objective-C工程中调用Swift,需要执行以下步骤: 1. 创建Swift和Objective-C工程 首先,您需要创建一个Swift和一个Objective-C工程。在Xcode中,选择File > New > Project,然后选择Swift和Objective-C工程分别创建它们。 2. 添加Swift到Objective-C工程 在Objective-C工程中,选择File > Add Files to "工程名",然后选择Swift的文件。确保选择“Copy items if needed”选项,以便将Swift文件复制到Objective-C工程中。 3. 创建一个桥接文件 在Objective-C工程中,创建一个桥接文件,用于将Swift导入Objective-C工程。选择File > New > File > Header File,然后将其命名为“工程名-Bridging-Header.h”。 4. 导入Swift到桥接文件中 打开桥接文件“工程名-Bridging-Header.h”,添加以下代码: #import "Swift名称-Swift.h" 这将导入Swift到Objective-C工程中。 5. 调用Swift中的方法 现在,您可以在Objective-C代码中调用Swift中的方法了。首先,确保在需要调用Swift的Objective-C文件中导入桥接头文件: #import "工程名-Bridging-Header.h" 然后,您可以使用以下代码调用Swift中的方法: Swift类名 *swiftObj = [[Swift类名 alloc] init]; [swiftObj Swift方法名称]; 注意:Swift中的类和方法必须使用@objc修饰符进行标记,以便它们可以在Objective-C代码中使用。例如: @objc class Swift类名: NSObject { @objc func Swift方法名称() { // Swift方法代码 } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值