IOS开发简易的网易新闻页面

这是简易的网易新闻,使用swift语法去写的

git 仓库地址:
https://e.coding.net/lujun1/wangyijianyixinwenswiftbanben/News1.git

//
//  NetworkTools.swift
//  News
//
//  Created by lujun on 2021/10/3.
//import UIKit
import Alamofireenum MethodType {case GETcase POST
}
class NetworkTools{//类方法class func requestData(type: MethodType,urlString: String, parameters: [String : Any]? = nil,finishedCallback : @escaping ( _ results : Any) -> ()){//        let type1 = type==MethodType.GET ? ".get" : ".post"if(type==MethodType.GET){Alamofire.AF.request(urlString).responseJSON { (response) inswitch response.result {case .success(let json):finishedCallback(json)breakcase .failure(let error):print("error:\(error)")break}}}if(type==MethodType.POST){Alamofire.AF.request(urlString, method: .post, parameters: parameters).responseJSON { (response) inswitch response.result {case .success(let json):finishedCallback(json)breakcase .failure(let error):print("error:\(error)")break}}}}//类方法class func requestDataWithParam(type: MethodType,urlString: String, parameters: [String : Any],finishedCallback : @escaping ( _ results : Any) -> ()){AF.request(urlString, parameters: parameters).responseJSON { (response) inswitch response.result {case .success(let json):finishedCallback(json)breakcase .failure(let error):print("error:\(error)")break}}}
}
import UIKitclass NewsModel: NSObject {@objc var title: String?
//    var title: String = ""@objc var replyCount: Int = 0@objc var source: String?@objc var imgsrc: String?//有参构造 KVCinit(dict: [String : Any]){super.init()setValuesForKeys(dict)}override func setValue(_ value: Any?, forUndefinedKey key: String) {}
}
//
//  ViewController.swift
//  News1
//
//  Created by lujun on 2021/10/3.
//import UIKit
private let kCellID: String = "kCellID"
class ViewController: UIViewController {private lazy var newsModel: [NewsModel] = [NewsModel]()private lazy var tableView: UITableView = {let tableView = UITableView()tableView.frame = self.view.boundstableView.dataSource = selftableView.register(UINib(nibName: "NewsViewCell", bundle: nil), forCellReuseIdentifier: kCellID)tableView.rowHeight = 90
//        tableView.register(UITableViewCell.self, forCellReuseIdentifier: kCellID)return tableView}()override func viewDidLoad() {super.viewDidLoad()setupNavigationBar()loadData()self.view.addSubview(tableView)}}
extension ViewController {private func setupNavigationBar (){navigationController?.navigationBar.backgroundColor = UIColor.rednavigationItem.titleView = UIImageView(image: UIImage(named: "navigation_logo"))navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "navigation_search"), style: .plain, target: self, action: #selector(click))}@objc  private func click(){print("---")}
}
extension ViewController {private func loadData(){let data = NSDate()let d = data.timeIntervalSince1970//1633316114//1348649079062print("\(d)")NetworkTools.requestData(type: .GET, urlString: "http://c.m.163.com/nc/article/list/T1348649079062/0-20.html", parameters: nil) { results in
//            print(results)
//            let b = (results as AnyObject).write(toFile:"/Users/lujun/Desktop/lujun.plist",atomically: true)
//            print(b)guard let resultDict = results as? [String : Any] else {return}guard let dataArray = resultDict["T1348649079062"] as?[[String : Any]] else{ return }for dict in dataArray {let newMdoel = NewsModel(dict: dict)self.newsModel.append(newMdoel)}
//            let news1: NewsModel = self.newsModel.first!
//            print(news1.title!)self.tableView.reloadData()}}
}
extension ViewController : UITableViewDataSource {func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {return newsModel.count}func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let cell = tableView.dequeueReusableCell(withIdentifier: kCellID, for: indexPath) as! NewsViewCellcell.newsModel = newsModel[indexPath.row]//        cell.textLabel?.text = "\(indexPath.row)"return cell}
}
import UIKit
import Kingfisher
class NewsViewCell: UITableViewCell {@IBOutlet weak var titleLabel: UILabel!@IBOutlet weak var replyCountLabel: UILabel!@IBOutlet weak var sourceLabel: UILabel!@IBOutlet weak var iconImageView: UIImageView!var newsModel: NewsModel?{didSet{ //监听属性方法titleLabel.text = newsModel?.titlereplyCountLabel.text = "\(newsModel?.replyCount ?? 0)在线"sourceLabel.text = newsModel?.sourcelet url = URL(string: newsModel?.imgsrc ?? "")iconImageView.kf.setImage(with: url, placeholder: UIImage(named: "launchScreen_bottom_icon_wc"), options: nil, completionHandler: nil)
//            iconImageView.layer.cornerRadius = 10iconImageView.layer.masksToBounds = true}}
}

IOS开发简易的网易新闻页面相关推荐

  1. IOS开发基础之网易新闻UICollectionView的使用第3天

    IOS开发基础之网易新闻UICollectionView的使用第3天 由于第3天的UICollectionView 并不实现,我查阅相关资料,也没解决,先从本地的plist加载的数据,不是网络的上的数 ...

  2. IOS开发基础之网易新闻JSON转模型数组第2天

    IOS开发基础之网易新闻JSON转模型数组第2天 // // HMHeadline.h // 01-网易新闻搭建 // // Created by 鲁军 on 2021/4/11. //#import ...

  3. IOS开发基础之网易新闻环境搭建异步请求json,AFN网络封装第1天

    IOS开发基础之网易新闻环境搭建异步请求json,AFN网络封装第1天 视频资料是2015年的,但是AFN是导入框架的关键文件,我尝试使用cocoapods安装最新的AFN,虽然成功了,但是版本太高, ...

  4. Flutter开发之《网易新闻客户端Flutter混合开发实践》笔记(52)

    摘自:网易新闻客户端Flutter混合开发实践 引言 网易新闻项目本身很庞大,业务繁多,全部改为Flutter实现肯定是不现实的,在使用Flutter的前期阶段,我们挑选了相对独立的几个模块,在现有工 ...

  5. 爬虫技术 -- 进阶学习(十)网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)...

    最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决定试一试~ 于是到https://www.nuget.org/packages/Scrapy ...

  6. 网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)

    转自原文 网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp) 最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决 ...

  7. 网易新闻页面信息抓取 -- htmlagilitypack搭配scrapysharp

    网易新闻页面信息抓取 -- htmlagilitypack搭配scrapysharp 最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决定试一 ...

  8. 基于XCode IOS开发系统实现的新闻APP设计

    一.项目概述 1.1 项目介绍 本次课程设计所实现的新闻阅读APP是基于XCode IOS开发系统上开发的一款可以查看,收藏以及删除新闻的一款IOS应用软件.它有着启动界面.登录界面,在输入正确的账号 ...

  9. iOS开发之各种动画各种页面切面效果

    转发:http://www.cocoachina.com/ios/20141226/10775.html 今天所介绍的主题是关于动画的,在之前的博客中也有用到动画的地方,今天就好好的总结一下iOS开发 ...

最新文章

  1. 好东西和大家分享阿!
  2. 什么是万词霸屏?做万词霸屏有效果么?
  3. 施耐德电气:2016年数据中心的三大关注领域
  4. 01-NVIDIA Jetson TX2开箱上电显示界面
  5. mysql删除七天_自动备份mysql并删除7天前备份
  6. ECharts 实现人民的名义关系图谱 代码开源
  7. Python列表以及列表的处理方法
  8. FPGA设计的基础流程
  9. Mybatis中properties标签的使用
  10. python 如何在一个for循环中遍历两个列表
  11. 用最简单的操作,做最精准的AI模型!
  12. 云从科技宣布B+轮融资,多家国有基金入股,累计获资35亿元
  13. [转]C#正则表达式小结
  14. Access 操作必须使用可更新查询
  15. CComboBoxEx 扩展组合框
  16. 如何快速找回丢失的数据?
  17. 英语发音规则---L字母
  18. Mysql中B+Tree索引相关知识点
  19. WINDOWS操作系统发展历程
  20. 如何看待哔哩哔哩(B站)的后端代码主仓库被上传至了GitHub?

热门文章

  1. c语言ox32左移一位的值,程序设计基础 (C)(32+32) 实验指导书.docx
  2. 到另一个文件夹 复制hdfs上的文件_HDFS——如何将文件从HDFS复制到本地
  3. Java面试面向对象三大特征,Java面试经典基础问答三
  4. 虚拟机架云服务器,云服务器 虚拟机架设
  5. android 创建文件夹_Android安全(四)数据库 之 SQLite数据库
  6. 旅游网站的主页代码_山西太原网站SEO优化推广联系电话
  7. 华为被超越!这家公司成中国最大智能手机制造商,不是小米!
  8. 嵌入式开发中,用C++真香!
  9. 盘点3个改变世界的AI项目,NLP/CV/BI,3个方向
  10. ebay php 商品添加多运输,eBay如何设置物流方式