swift轮播图+网络请求+自定义cell

分页控制器

1.分页控制器

导入第三方PagingMenuController
第三方链接:https://github.com/kitasuke/PagingMenuController
导入使用第三方方法链接:http://www.hangge.com/blog/cache/detail_1656.html

使用PagingMenuController

ViewController.m
ViewController1,ViewController2,ViewController3,ViewController4,ViewController5是分页
需要分几页创建几个控制器 这里需要五个所以创建了五个控制器


// An highlighted block
import Foundation
import UIKit


var SCR = UIScreen.main.bounds
var SCR_W = UIScreen.main.bounds.size.width
var SCR_H = UIScreen.main.bounds.size.height

首先创建5个tabbar

import UIKit

class MainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let one = OneViewController()
        let oneNav = UINavigationController.init(rootViewController: one)
        oneNav.tabBarItem = UITabBarItem.init(title: "新闻", image: nil, selectedImage: nil)
        
        let two = TwoViewController()
        let twoNav = UINavigationController.init(rootViewController: two)
        twoNav.tabBarItem = UITabBarItem.init(title: "社区", image: nil, selectedImage: nil)
        
        let three = ThreeViewController()
        let threeNav = UINavigationController.init(rootViewController: three)
        threeNav.tabBarItem = UITabBarItem.init(title: "投研", image: nil, selectedImage: nil)
        
        let four = FourViewController()
        let fourNav = UINavigationController.init(rootViewController: four)
        fourNav.tabBarItem = UITabBarItem.init(title: "我的", image: nil, selectedImage: nil)
        
        self.viewControllers = [oneNav,twoNav,threeNav,fourNav]
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

// An highlighted block
let main = MainViewController()
     self.window?.rootViewController = main

2.轮播图

导入轮播图的第三方ImageHelper
使用第三方方法链接:http://www.hangge.com/blog/cache/detail_1314.html
Swift请求网络数据使用Alamofire
Alamofire下载链接:https://github.com/Alamofire/Alamofire


import UIKit
import Alamofire

class ViewController1: UIViewController,SliderGalleryControllerDelegate,UITableViewDelegate,UITableViewDataSource {
    
    
    
    var table : UITableView?
    
    
    func galleryDataSource() -> [String] {
        return imgArr
    }
    
    func galleryScrollerViewSize() -> CGSize {
        return CGSize(width: SCR_W, height: 200)
    }
    

    var sdlier = SliderGalleryController()
    
    var imgArr = ["http://img4q.duitang.com/uploads/item/201503/18/20150318230437_Pxnk3.jpeg",
                  "http://img4.duitang.com/uploads/item/201501/31/20150131234424_WRJGa.jpeg",
                  "http://img5.duitang.com/uploads/item/201502/11/20150211095858_nmRV8.jpeg"]
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.white
        
        sdlier = SliderGalleryController()
        sdlier.delegate = self
        sdlier.view.frame = CGRect(x: 0, y: 0, width: SCR_W, height: 200)
        sdlier.view.backgroundColor = UIColor.white
        addChildViewController(sdlier)
        view.addSubview(sdlier.view)
        
        let parameters1 = ["method":"app.resource.getimg","position":"News-Banner"]
        Alamofire.request("http://buluokes.huimor.com/api", parameters: parameters1).responseJSON { (response) in
            
            print(response.result.value)
//            if let JSON = response.result.value
        }
        
        table = UITableView.init(frame: CGRect(x: 0, y: 240, width: SCR_W, height: SCR_H - 240), style: .grouped)
        table?.register(MainTableViewCell.self, forCellReuseIdentifier: "cell")
        table?.contentInset = UIEdgeInsetsMake(-30, 0, 0, 0)
        table?.delegate = self
        table?.dataSource = self
        self.view.addSubview(table!)
        
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 4
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if section == 0 {
            return 1
        }else if section == 1{
            return 3
        }else if section == 2{
            return 1
        }
        return 1
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MainTableViewCell
        if cell == nil {
            cell = MainTableViewCell.init(style: .default, reuseIdentifier: "cell")
        }
        if indexPath.section == 0 {
            cell.textLabel?.text = "创业黑马董事长:区块链是机会,但不是每个人的机会"
            cell.imageView?.image = UIImage.init(named: "2")
        }else if indexPath.section == 1{
            cell.title?.text = "创业黑马董事长:区块链是机会,但不是每个人的机会"
            cell.name?.text = "岳恒月"
            cell.time?.text = "6月11日"
            cell.imag?.image = UIImage.init(named: "2")
        }else if indexPath.section == 2{
            let imgV = UIImageView.init(frame: CGRect(x: 0, y: 0, width: SCR_W, height: 140))
            imgV.image = UIImage.init(named: "3")
            cell.addSubview(imgV)
        }else{
            cell.title?.text = "创业黑马董事长:区块链是机会,但不是每个人的机会"
            cell.name?.text = "岳恒月"
            cell.time?.text = "6月11日"
            cell.imag?.image = UIImage.init(named: "2")
        }
        return cell
        
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.section == 2{
            return 140
        }
        return 70
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

import UIKit
import PagingMenuController

class OneViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let tView = UIImageView.init(frame: CGRect(x: (SCR_W - 100) / 2, y: 0, width: 100, height: 50))
        tView.image = UIImage.init(named: "1")
        self.navigationItem.titleView = tView
        
        self.navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "?", style: .plain, target: self, action: #selector(click))
        
        
        let options = pagingMenuOptions()
        
        let pagingMenuController = PagingMenuController(options: options)
        //分页菜单控制器尺寸设置
        pagingMenuController.view.frame.origin.y += 64
        pagingMenuController.view.frame.size.height -= 64
        
        addChildViewController(pagingMenuController)
        view.addSubview(pagingMenuController.view)
        
        
    }

    private struct pagingMenuOptions:PagingMenuControllerCustomizable {
        
        private var v1 = ViewController1()
        private var v2 = ViewController2()
        private var v3 = ViewController3()
        private var v4 = ViewController4()
        private var v5 = ViewController5()
        
        fileprivate var componentType: ComponentType{
            return .all(menuOptions: MenuOptions(), pagingControllers: pagingControllers)
        }
        
        fileprivate var pagingControllers : [UIViewController]{
            return [v1,v2,v3,v4,v5]
        }
        
        fileprivate struct MenuOptions:MenuViewCustomizable {
            var displayMode: MenuDisplayMode{
                return .segmentedControl
            }
            
            var itemsOptions: [MenuItemViewCustomizable] {
                return [MenuItem1(),MenuItem2(),MenuItem3(),MenuItem4(),MenuItem5()]
            }
            
            
        }
        
        //第1个菜单项
        fileprivate struct MenuItem1: MenuItemViewCustomizable {
            //自定义菜单项名称
            var displayMode: MenuItemDisplayMode {
                return .text(title: MenuItemText(text: "推荐"))
            }
        }
        
        //第2个菜单项
        fileprivate struct MenuItem2: MenuItemViewCustomizable {
            //自定义菜单项名称
            var displayMode: MenuItemDisplayMode {
                return .text(title: MenuItemText(text: "快讯"))
            }
        }
        
        fileprivate struct MenuItem3: MenuItemViewCustomizable {
            //自定义菜单项名称
            var displayMode: MenuItemDisplayMode {
                return .text(title: MenuItemText(text: "深度"))
            }
        }
        
        fileprivate struct MenuItem4: MenuItemViewCustomizable {
            //自定义菜单项名称
            var displayMode: MenuItemDisplayMode {
                return .text(title: MenuItemText(text: "时点对话"))
            }
        }
        
        fileprivate struct MenuItem5: MenuItemViewCustomizable {
            //自定义菜单项名称
            var displayMode: MenuItemDisplayMode {
                return .text(title: MenuItemText(text: "行情分析"))
            }
        }
    }
    
    @objc func click() -> Void {
        let t = tViewController()
        
        self.navigationController?.pushViewController(t, animated: true)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

// An highlighted block

import UIKit

class MainTableViewCell: UITableViewCell {

    var imag : UIImageView?
    var title : UILabel?
    var name : UILabel?
    var time : UILabel?
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: .default, reuseIdentifier: reuseIdentifier)
        
        self.creatUI()
    }
    
    func creatUI() -> Void {
        imag = UIImageView.init(frame: CGRect(x: 5, y: 15, width: 60, height: 40))
        self.contentView.addSubview(imag!)
        
        title = UILabel.init(frame: CGRect(x: 70, y: 15, width: SCR_W - 70, height: 30))
        title?.font = UIFont.systemFont(ofSize: 20)
        title?.textAlignment = .left
        self.contentView.addSubview(title!)
        
        name = UILabel.init(frame: CGRect(x: 70, y: 50, width: 100, height: 20))
        name?.font = UIFont.systemFont(ofSize: 15)
        self.contentView.addSubview(name!)
        
        time = UILabel.init(frame: CGRect(x: SCR_W - 70, y: 50, width: 70, height: 20))
        time?.font = UIFont.systemFont(ofSize: 15)
        self.contentView.addSubview(time!)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值