Commit 5ba08f80b3c5cf7abfaf078174a43999eb01549e
1 parent
04514332
短剧主页cell跳转播放器
Showing
4 changed files
with
103 additions
and
60 deletions
metaCode/Classes/Main/HomePage/Controller/DownSlideController/CNUpSlideDetailViewController.swift
| ... | ... | @@ -91,34 +91,13 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou |
| 91 | 91 | override func viewDidLoad() { |
| 92 | 92 | super.viewDidLoad() |
| 93 | 93 | setupUI() |
| 94 | -// getImageFromCell() | |
| 95 | -// if self.cellType == .playlet{ | |
| 96 | - self.getBlockContents(page: 1) | |
| 97 | -// } | |
| 94 | + self.getBlockContents(page: 1) | |
| 98 | 95 | } |
| 99 | 96 | |
| 100 | 97 | private func setupUI() { |
| 101 | 98 | self.view.layer.masksToBounds = true |
| 102 | 99 | self.view.addSubview(self.tableView) |
| 103 | 100 | self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight) |
| 104 | - | |
| 105 | - if self.cellType == .playlet{//短剧 大图 | |
| 106 | -// self.view.addSubview(self.tableView) | |
| 107 | -// self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight) | |
| 108 | - }else if self.cellType == .course{//课程 大图 | |
| 109 | - if self.slideModel!.type == SlideModelTypeAllCourse12{ | |
| 110 | - //全部课程 | |
| 111 | - | |
| 112 | - }else if self.slideModel!.type == SlideModelTypeOneCourse75{ | |
| 113 | - //大图课程 | |
| 114 | - | |
| 115 | - } | |
| 116 | -// view.addSubview(scrollView) | |
| 117 | -// scrollView.slideModel = _slideModel | |
| 118 | - }else if self.cellType == .playletToCourse{ | |
| 119 | - //首页->课程 | |
| 120 | - | |
| 121 | - } | |
| 122 | 101 | view.addSubview(closeBtn) |
| 123 | 102 | view.addGestureRecognizer(dismissPanGesture) |
| 124 | 103 | } |
| ... | ... | @@ -314,8 +293,6 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou |
| 314 | 293 | self!.dataArray.addObjects(from: albumBaseModel.list) |
| 315 | 294 | if self!.dataArray.count > 0 && self!.tableView.mj_header == nil && self!.tableView.mj_footer == nil { |
| 316 | 295 | self!.addRefreshView() |
| 317 | -// self!.pageNum = self!.pageNum + 1 | |
| 318 | -// self!.getBlockContents(page: self!.pageNum) | |
| 319 | 296 | } |
| 320 | 297 | } |
| 321 | 298 | ... | ... |
metaCode/Classes/Main/HomePages/Controller/PlayletHomePage/CNLivePlayletHomePageController.swift
| ... | ... | @@ -6,16 +6,22 @@ |
| 6 | 6 | // 短剧主页 |
| 7 | 7 | |
| 8 | 8 | import Foundation |
| 9 | - | |
| 9 | +import MJRefresh | |
| 10 | 10 | class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataSource, UITableViewDelegate{ |
| 11 | 11 | |
| 12 | + var pageNum: NSInteger = 1 | |
| 12 | 13 | var jianjieLblHeight:CGFloat = 36 |
| 13 | 14 | |
| 14 | 15 | let kCNLivePlayletCellIdentifier = "kCNLivePlayletCellIdentifier" |
| 15 | 16 | let kCNLivePlayletHeaderCellIdentifier = "kCNLivePlayletHeaderCellIdentifier" |
| 16 | 17 | ///数据源 |
| 17 | - var albumModelArr:Array<CNLiveAlbumListModel> = [CNLiveAlbumListModel]() | |
| 18 | - var albumId = "" | |
| 18 | +// var albumModelArr:Array<CNLiveAlbumListModel> = [CNLiveAlbumListModel]() | |
| 19 | + lazy var albumModelArr: NSMutableArray = { | |
| 20 | + var dataArray = NSMutableArray() | |
| 21 | + return dataArray | |
| 22 | + }() | |
| 23 | + var albumMsgModel:CNLiveAlbumMsgModel? | |
| 24 | + var albumId = ""//aid | |
| 19 | 25 | // MARK: - 懒加载 |
| 20 | 26 | |
| 21 | 27 | lazy var tableView : UITableView = { |
| ... | ... | @@ -32,13 +38,13 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS |
| 32 | 38 | init(aid:String){ |
| 33 | 39 | super.init(nibName: nil, bundle: nil) |
| 34 | 40 | self.albumId = aid |
| 35 | - self.getAlbumList(aid: aid)// self.albumModel!.contentId 或 self.albumMsgModel!.albumId | |
| 36 | - } | |
| 37 | - init(albumModelArr:Array<CNLiveAlbumListModel>) { | |
| 38 | - self.albumModelArr = Array(albumModelArr) | |
| 39 | - super.init(nibName: nil, bundle: nil) | |
| 40 | - self.tableView.reloadData() | |
| 41 | + self.getAlbumMsg(aid: aid)// self.albumModel!.contentId 或 self.albumMsgModel!.albumId | |
| 41 | 42 | } |
| 43 | +// init(albumModelArr:NSMutableArray) { | |
| 44 | +// self.albumModelArr = NSMutableArray(array: albumModelArr) | |
| 45 | +// super.init(nibName: nil, bundle: nil) | |
| 46 | +// self.tableView.reloadData() | |
| 47 | +// } | |
| 42 | 48 | |
| 43 | 49 | required init?(coder: NSCoder) { |
| 44 | 50 | fatalError("init(coder:) has not been implemented") |
| ... | ... | @@ -54,36 +60,67 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS |
| 54 | 60 | } |
| 55 | 61 | |
| 56 | 62 | // MARK: - 获取短剧主页数据 |
| 57 | - //获取专辑视频列表详情(播放地址 ,点赞数等信息) | |
| 58 | - func getAlbumList(aid:String){ | |
| 59 | - showLoading(message: "") | |
| 60 | - CNLiveHomePageViewModel.getAlbumList(aid: aid){ result, status in | |
| 63 | + //获取专辑详情(简介等) | |
| 64 | + func getAlbumMsg(aid:String){ | |
| 65 | + CNLiveHomePageViewModel.getAlbumMsg(aid: aid) { [weak self] result, status in | |
| 61 | 66 | hiddenLoading() |
| 62 | 67 | if status == .success{ |
| 63 | - let arr = result as! Array<CNLiveAlbumListModel> | |
| 64 | - self.albumModelArr = Array(arr) | |
| 65 | - self.getAlbumMsg(aid: aid) | |
| 68 | + let model = result as! CNLiveAlbumMsgModel | |
| 69 | + self!.albumMsgModel = model | |
| 70 | + self!.getAlbumList(aid: aid, page: self!.pageNum) | |
| 66 | 71 | }else{ |
| 67 | 72 | |
| 68 | 73 | } |
| 69 | 74 | } |
| 70 | 75 | } |
| 71 | - //获取专辑详情(简介等) | |
| 72 | - func getAlbumMsg(aid:String){ | |
| 73 | - CNLiveHomePageViewModel.getAlbumMsg(aid: aid) { result, status in | |
| 76 | + //获取专辑视频列表详情(播放地址 ,点赞数等信息) | |
| 77 | + func getAlbumList(aid:String, page:NSInteger){ | |
| 78 | + showLoading(message: "") | |
| 79 | + CNLiveHomePageViewModel.getAlbumList(aid: aid, page: page){[weak self] result, status in | |
| 74 | 80 | hiddenLoading() |
| 75 | 81 | if status == .success{ |
| 76 | - let model = result as! CNLiveAlbumMsgModel | |
| 77 | - for listModel in self.albumModelArr { | |
| 78 | - listModel.albumMsgModel = model | |
| 82 | + let dataMdl = result as! CNLiveAlbumListBaseModel | |
| 83 | + let arr = dataMdl.list | |
| 84 | + for listModel in arr { | |
| 85 | + listModel.albumMsgModel = self?.albumMsgModel | |
| 86 | + } | |
| 87 | + | |
| 88 | + if self!.pageNum > 1 && self!.albumModelArr.count > 0 { | |
| 89 | + self!.albumModelArr.addObjects(from: arr) | |
| 90 | + } | |
| 91 | + if self!.pageNum == 1 { | |
| 92 | + self!.albumModelArr.removeAllObjects() | |
| 93 | + self!.albumModelArr.addObjects(from: arr) | |
| 94 | + if self!.albumModelArr.count > 0 && self!.tableView.mj_header == nil && self!.tableView.mj_footer == nil { | |
| 95 | + self!.addRefreshView() | |
| 96 | + } | |
| 97 | + } | |
| 98 | + | |
| 99 | + self!.tableView.mj_header?.endRefreshing() | |
| 100 | + | |
| 101 | + self!.tableView.reloadData() | |
| 102 | + if dataMdl.hasNextPage{ | |
| 103 | + self!.tableView.mj_footer?.endRefreshing() | |
| 104 | + }else{ | |
| 105 | + self!.tableView.mj_footer?.endRefreshingWithNoMoreData() | |
| 79 | 106 | } |
| 80 | - self.tableView.reloadData() | |
| 81 | 107 | }else{ |
| 82 | 108 | |
| 83 | 109 | } |
| 84 | 110 | } |
| 85 | 111 | } |
| 86 | 112 | |
| 113 | + func addRefreshView() { | |
| 114 | + tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {[weak self] in | |
| 115 | + self!.pageNum = 1 | |
| 116 | + self!.getAlbumList(aid: self!.albumId , page: 1) | |
| 117 | + }) | |
| 118 | + | |
| 119 | + tableView.mj_footer = MJRefreshAutoNormalFooter.init(refreshingBlock: {[weak self] in | |
| 120 | + self!.pageNum = self!.pageNum + 1 | |
| 121 | + self!.getAlbumList(aid: self!.albumId, page: self!.pageNum) | |
| 122 | + }) | |
| 123 | + } | |
| 87 | 124 | |
| 88 | 125 | func numberOfSections(in tableView: UITableView) -> Int { |
| 89 | 126 | 2 |
| ... | ... | @@ -109,11 +146,11 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS |
| 109 | 146 | } |
| 110 | 147 | cell.homePageNeedReloadActionBlock = { |
| 111 | 148 | DispatchQueue.main.asyncAfter(deadline: .now()+0.5) { [self] in |
| 112 | - self.getAlbumList(aid: self.albumId) | |
| 149 | + self.getAlbumMsg(aid: self.albumId) | |
| 113 | 150 | } |
| 114 | 151 | } |
| 115 | 152 | if self.albumModelArr.count > 0{ |
| 116 | - let albumListModel = self.albumModelArr[0] | |
| 153 | + let albumListModel = self.albumModelArr[0] as! CNLiveAlbumListModel | |
| 117 | 154 | cell.albumListModel = albumListModel |
| 118 | 155 | } |
| 119 | 156 | return cell |
| ... | ... | @@ -123,7 +160,7 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS |
| 123 | 160 | let cell = CNLivePlayletHomePageCell() |
| 124 | 161 | return cell |
| 125 | 162 | } |
| 126 | - let albumListModel = self.albumModelArr[indexPath.row] | |
| 163 | + let albumListModel = self.albumModelArr[indexPath.row] as! CNLiveAlbumListModel | |
| 127 | 164 | cell.albumListModel = albumListModel |
| 128 | 165 | return cell |
| 129 | 166 | } |
| ... | ... | @@ -138,7 +175,7 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS |
| 138 | 175 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
| 139 | 176 | if indexPath.section == 0{ |
| 140 | 177 | }else{ |
| 141 | - let albumListModel = self.albumModelArr[indexPath.row] | |
| 178 | + let albumListModel = self.albumModelArr[indexPath.row] as! CNLiveAlbumListModel | |
| 142 | 179 | let aid = albumListModel.albumMsgModel?.albumId ?? "" |
| 143 | 180 | //发播放器销毁通知 |
| 144 | 181 | NotificationCenter.default.post(name: Notification.Name.PlayerManage.kPlayerDestroyNotification, object: nil) |
| ... | ... | @@ -153,7 +190,8 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS |
| 153 | 190 | }) |
| 154 | 191 | self.navigationController?.viewControllers = tempArray as! [CNLiveBaseViewController] |
| 155 | 192 | //跳转播放页 |
| 156 | - navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: aid, page: 1, currentIndex: indexPath.row, dataArray: self.albumModelArr), animated: pushAnimated) | |
| 193 | + let dataArray = Array(self.albumModelArr) as! [CNLiveAlbumListModel] | |
| 194 | + navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: aid, page: self.pageNum, currentIndex: indexPath.row, dataArray: dataArray), animated: pushAnimated) | |
| 157 | 195 | } |
| 158 | 196 | } |
| 159 | 197 | } | ... | ... |
metaCode/Classes/Main/HomePages/Model/CNLiveAlbumListModel.swift
| ... | ... | @@ -7,6 +7,28 @@ |
| 7 | 7 | |
| 8 | 8 | import Foundation |
| 9 | 9 | |
| 10 | +class CNLiveAlbumListBaseModel:BaseModel{ | |
| 11 | + var endRow = 0 | |
| 12 | + var firstPage = 0 | |
| 13 | + var hasNextPage = false | |
| 14 | + var nextPage = 0 | |
| 15 | + var hasPreviousPage = false | |
| 16 | + var isFirstPage = true | |
| 17 | + var isLastPage = true | |
| 18 | + var lastPage = 0 | |
| 19 | + var list = [CNLiveAlbumListModel]() | |
| 20 | + var navigateFirstPage = 0 | |
| 21 | + var navigateLastPage = 0 | |
| 22 | + var navigatePages = 0 | |
| 23 | + var navigatepageNums:Array<Any> = [] | |
| 24 | + var pageNum = 0 | |
| 25 | + var pageSize = 0 | |
| 26 | + var pages = 0 | |
| 27 | + var prePage = 0 | |
| 28 | + var size = 0 | |
| 29 | + var startRow = 0 | |
| 30 | + var total = 0 | |
| 31 | +} | |
| 10 | 32 | class CNLiveAlbumListModel:BaseModel{ |
| 11 | 33 | var title = "" |
| 12 | 34 | var shortTitle = "" | ... | ... |
metaCode/Classes/Main/HomePages/ViewModel/CNLiveHomePageViewModel.swift
| ... | ... | @@ -141,10 +141,12 @@ class CNLiveHomePageViewModel:NSObject{ |
| 141 | 141 | } |
| 142 | 142 | |
| 143 | 143 | /// 获取首页-专辑视频列表详情 |
| 144 | - static func getAlbumList(aid:String,resultBlock: @escaping downSlideResultBlock) { | |
| 144 | + static func getAlbumList(aid:String, page:NSInteger,resultBlock: @escaping downSlideResultBlock) { | |
| 145 | 145 | let param = NSMutableDictionary() |
| 146 | 146 | param.setValue(aid, forKey: "aid") |
| 147 | 147 | param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "sid") |
| 148 | + param.setValue("\(page)", forKey: "page") | |
| 149 | + | |
| 148 | 150 | CNLiveNetworking.setAllowRequestDefaultArgument(true) |
| 149 | 151 | CNLiveNetworking.setupShowDataResult(false) |
| 150 | 152 | CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseCMSUrl+"/ugcApi/albumList", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in |
| ... | ... | @@ -154,14 +156,18 @@ class CNLiveHomePageViewModel:NSObject{ |
| 154 | 156 | let errorCode = "\(resp["errorCode"] ?? "0")" |
| 155 | 157 | if (errorCode == "0") { |
| 156 | 158 | let dataDic = resp["data"] as! Dictionary<String, Any> |
| 157 | - let dataList = dataDic["list"] as! Array<Any> | |
| 158 | - var listArr = Array<Any>() | |
| 159 | - for listDic in dataList{ | |
| 160 | - let dataMdl = newDictionaryToModel(listDic as! [String : Any], CNLiveAlbumListModel.self) | |
| 161 | - listArr.append(dataMdl) | |
| 162 | - } | |
| 159 | + let dataMdl = newDictionaryToModel(dataDic , CNLiveAlbumListBaseModel.self) | |
| 160 | + resultBlock(dataMdl,.success) | |
| 163 | 161 | |
| 164 | - resultBlock(listArr,.success) | |
| 162 | +// let dataDic = resp["data"] as! Dictionary<String, Any> | |
| 163 | +// let dataList = dataDic["list"] as! Array<Any> | |
| 164 | +// var listArr = Array<Any>() | |
| 165 | +// for listDic in dataList{ | |
| 166 | +// let dataMdl = newDictionaryToModel(listDic as! [String : Any], CNLiveAlbumListModel.self) | |
| 167 | +// listArr.append(dataMdl) | |
| 168 | +// } | |
| 169 | +// | |
| 170 | +// resultBlock(listArr,.success) | |
| 165 | 171 | }else{ |
| 166 | 172 | resultBlock(NSNull(),.failed) |
| 167 | 173 | } | ... | ... |