吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1693|回复: 2
收起左侧

[其他原创] [ios]获取wanAndroid的公众号列表数据(连载2)

[复制链接]
debug_cat 发表于 2021-3-5 22:46
本帖最后由 莫问刀 于 2021-3-7 22:47 编辑

Xnip2021-03-05_22-20-08.png

上面是效果图

ios网络请求-> 列表展示数据

背景

网络请求工具:Alamofire

列表展示控件:uitableview

json转模型:AlamofireObjectMapper


获取wanAndroid的api数据

https://wanandroid.com/wxarticle/chapters/json

数据不多,不用分页。


  • 控制器代码
//
//  WxListController.swift
//  uitable
//
//  Created by Alice on 2021/3/5.
//
import AlamofireObjectMapper
import UIKit
import Alamofire

//公众号列表展示页面                 
class WxListController: UIViewController, UITableViewDelegate, UITableViewDataSource{

    //保存微信列表
    var wxList = [WxAuthor]()

    private lazy var uiTableView : UITableView = {
        let tab = UITableView(frame: .zero)

        return tab
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(uiTableView)
        uiTableView.snp.makeConstraints { (make) in
            //大小和父容器一样大
            make.width.equalToSuperview()
            //设置上下位置,在安全区内
            make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
            make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
        }
        //设置代{过}{滤}理
        uiTableView.delegate = self
        uiTableView.dataSource = self
        uiTableView.rowHeight = UITableView.automaticDimension
        uiTableView.register(CellWxAuthor.self, forCellReuseIdentifier: "cell")
        getWxList()
    }

    func getWxList() {
        //获取列表数据
        Alamofire.request(ApiConstant.getChaptersUrl()).responseObject { (response: DataResponse<BeanWxList>) in

            let wxListBean = response.result.value
            //print(wxListBean?.data?.toJSONString() ?? "")
            self.wxList = wxListBean?.data ?? [WxAuthor]()
            self.uiTableView.reloadData()

        }

    }
}
//tabview的cell实现
extension WxListController{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return wxList.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CellWxAuthor

        //设置数据
        cell.setValueForCell(data: wxList[indexPath.row])
        return cell
    }
}
  • 模型代码

    //
    //  BeanWxList.swift
    //  uitable
    //  公众号列表模型
    //  Created by Alice on 2021/3/5.
    //
    
    import Foundation
    import ObjectMapper
    
    class BeanWxList: Mappable {
    
      var errorCode : Int = 0
      var errorMsg : String =  ""
      var data : [WxAuthor]?
    
      required init?(map: Map) {
    
      }
    
      func mapping(map: Map) {
          errorCode   <- map["errorCode"]
          errorMsg    <- map["errorMsg"]
          data        <- map["data"]
      }
    }
    
    class WxAuthor: Mappable {
      required init?(map: Map) {
    
      }
    
      func mapping(map: Map) {
          courseId          <- map["courseId"]
          id                <- map["id"]
          name              <- map["name"]
          order             <- map["order"]
          parentChapterId   <- map["parentChapterId"]
      }
    
      var courseId: Int = 0
      var id : Int = 0
      var name : String = ""
      var order : Int = 0
      var parentChapterId : Int = 0
    }
    
  • cell代码

    //
    //  CellWxAuthor.swift
    //  uitable
    //
    //  Created by Alice on 2021/3/5.
    //
    import UIKit
    import Foundation
    import SnapKit
    //微信作者
    class CellWxAuthor: UITableViewCell {
    
      private lazy var labName : UILabel = {
          let lab = UILabel(frame: .zero)
          //显示作者名字
          lab.numberOfLines = 1
          lab.textColor = ColorUtils.parser("#000811")
          return lab
      }()
    
      private lazy var labID : UILabel = {
          let lab = UILabel(frame: .zero)
          //显示作者id
          lab.textColor = ColorUtils.parser("#666666")
          return lab
      }()
    
      required init?(coder: NSCoder) {
          fatalError("init(coder:) has not been implemented")
      }
      override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
          super.init(style: style, reuseIdentifier: reuseIdentifier)
          //ui编写
          addSubview(labName)
          addSubview(labID)
    
          //开始约束,名字在上面,id在下面.
          labName.snp.makeConstraints { (make) in
              make.left.equalToSuperview().offset(12)
              make.top.equalToSuperview().offset(12)
    
          }
    
          labID.snp.makeConstraints { (make) in
              //左边位置到屏幕左边,margin 12
              make.left.equalToSuperview().offset(12)
              //顶部在name的下边,margin top 4
              make.top.equalTo(labName.snp.bottom).offset(4)
              //一定要约束下边.距离-12
              //下和右的margin,都是负数
              make.bottom.equalTo(-12)
          }
      }
    
      //设置数据
      func setValueForCell(data : WxAuthor) {
          labName.text = data.name
          labID.text = String(data.id)
      }
    }
    

纯代码构建的ui。

当前目标,就是先加载出列表数据。

点击不同的作者,进入该作者的文章列表中。展示文章的标题,封面等数据。

点击文章列表,进入文章详情中。webview展示。

以上就是简单的网络数据获取,和ui展示。

下一篇就是页面的跳转了。

代码地址

https://github.com/cat13954/IOSUiTableViewSample

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
大猫King + 1 + 1 大佬威武~~

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a3322a 发表于 2021-3-6 03:35
感谢分享,学习了!
日月与你 发表于 2021-3-6 09:17
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表