Commit 4b35123b7c25aafa52c06999fa1b7657077dc74a
1 parent
280cce7f
视频列表没有加载功能
Showing
2 changed files
with
64 additions
and
3 deletions
metaCode/Classes/Main/VideoPage/Controller/CNLiveShortVideoViewController.swift
| @@ -380,7 +380,7 @@ extension CNLiveShortVideoViewController { | @@ -380,7 +380,7 @@ extension CNLiveShortVideoViewController { | ||
| 380 | } | 380 | } |
| 381 | } | 381 | } |
| 382 | func listActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) { | 382 | func listActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) { |
| 383 | - CNLiveShortVideoContentListView.showVideoContentListView(title: viewcell.homeModel.albumMsgModel!.albumName,dataArray: dataArray, episodeNow: viewcell.homeModel.albumMsgModel!.episodeNow, result: {[weak self] listModel in | 383 | + CNLiveShortVideoContentListView.showVideoContentListView(aid: viewcell.homeModel.albumMsgModel!.albumId,title: viewcell.homeModel.albumMsgModel!.albumName,dataArray: dataArray, episodeNow: viewcell.homeModel.albumMsgModel!.episodeNow, result: {[weak self] listModel in |
| 384 | guard let self = self else { return } | 384 | guard let self = self else { return } |
| 385 | let index = self.dataArray.index(of: listModel) as NSInteger | 385 | let index = self.dataArray.index(of: listModel) as NSInteger |
| 386 | self.playTheIndex(index: index) | 386 | self.playTheIndex(index: index) |
metaCode/Classes/Main/VideoPage/View/CNLiveShortVideoContentListView.swift
| @@ -6,9 +6,12 @@ | @@ -6,9 +6,12 @@ | ||
| 6 | // | 6 | // |
| 7 | 7 | ||
| 8 | import Foundation | 8 | import Foundation |
| 9 | +import MJRefresh | ||
| 10 | +import EmptyDataSet_Swift | ||
| 9 | 11 | ||
| 10 | typealias CloseVideoListResultBlock = (_ listModel: Any) ->Void | 12 | typealias CloseVideoListResultBlock = (_ listModel: Any) ->Void |
| 11 | -class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewDataSource { | 13 | +typealias ReloadVideoListResultBlock = (_ dataArray: NSMutableArray) ->Void |
| 14 | +class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewDataSource, EmptyDataSetSource, EmptyDataSetDelegate { | ||
| 12 | 15 | ||
| 13 | lazy var grayMaskView: UIView = { | 16 | lazy var grayMaskView: UIView = { |
| 14 | let grayMaskView = UIView() | 17 | let grayMaskView = UIView() |
| @@ -51,6 +54,8 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | @@ -51,6 +54,8 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | ||
| 51 | let tableView = UITableView(frame: .zero, style: .plain) | 54 | let tableView = UITableView(frame: .zero, style: .plain) |
| 52 | tableView.dataSource = self | 55 | tableView.dataSource = self |
| 53 | tableView.delegate = self | 56 | tableView.delegate = self |
| 57 | + tableView.emptyDataSetDelegate = self | ||
| 58 | + tableView.emptyDataSetSource = self | ||
| 54 | tableView.rowHeight = 90 | 59 | tableView.rowHeight = 90 |
| 55 | tableView.estimatedRowHeight = 90 | 60 | tableView.estimatedRowHeight = 90 |
| 56 | tableView.estimatedSectionFooterHeight = 0 | 61 | tableView.estimatedSectionFooterHeight = 0 |
| @@ -70,7 +75,11 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | @@ -70,7 +75,11 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | ||
| 70 | return array | 75 | return array |
| 71 | }() | 76 | }() |
| 72 | 77 | ||
| 78 | + var aid: String! = "" | ||
| 79 | + var pageNum: NSInteger! = 1 | ||
| 80 | + var footerRefreshView: CNLiveFooterRefresh! | ||
| 73 | var resultBlock: CloseVideoListResultBlock! | 81 | var resultBlock: CloseVideoListResultBlock! |
| 82 | + var reloadBlock: ReloadVideoListResultBlock! | ||
| 74 | 83 | ||
| 75 | override init(frame: CGRect) { | 84 | override init(frame: CGRect) { |
| 76 | super.init(frame: frame) | 85 | super.init(frame: frame) |
| @@ -109,14 +118,62 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | @@ -109,14 +118,62 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | ||
| 109 | make.bottom.left.right.equalToSuperview() | 118 | make.bottom.left.right.equalToSuperview() |
| 110 | make.top.equalTo(lineLabel.snp.bottom).offset(10) | 119 | make.top.equalTo(lineLabel.snp.bottom).offset(10) |
| 111 | } | 120 | } |
| 121 | + | ||
| 122 | + addRefreshView() | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + func addRefreshView() { | ||
| 126 | + footerRefreshView = CNLiveFooterRefresh(refreshingBlock: { [weak self] in | ||
| 127 | + guard let self = self else { return } | ||
| 128 | + self.pageNum += 1 | ||
| 129 | + self.requestData() | ||
| 130 | + }) | ||
| 131 | + footerRefreshView.stateLabel!.textColor = .white | ||
| 132 | + footerRefreshView.loadingView?.color = .white | ||
| 133 | + self.tableView.mj_footer = footerRefreshView | ||
| 112 | } | 134 | } |
| 113 | 135 | ||
| 114 | func setupWithDataSource(title: String,dataArray: NSMutableArray,episodeNow: String) { | 136 | func setupWithDataSource(title: String,dataArray: NSMutableArray,episodeNow: String) { |
| 115 | dataSource = dataArray | 137 | dataSource = dataArray |
| 138 | + if Int(episodeNow) == dataArray.count { | ||
| 139 | + self.tableView.mj_footer?.endRefreshingWithNoMoreData() | ||
| 140 | + } else { | ||
| 141 | + self.pageNum = dataArray.count / 10 | ||
| 142 | + } | ||
| 116 | titleLabel.text = "\(title)·\(episodeNow)集" | 143 | titleLabel.text = "\(title)·\(episodeNow)集" |
| 117 | self.tableView.reloadData() | 144 | self.tableView.reloadData() |
| 118 | } | 145 | } |
| 119 | 146 | ||
| 147 | + func requestData() { | ||
| 148 | + CNLiveShortVideoViewModel.requstWithShortVideo(aid: self.aid, page: self.pageNum) { [weak self] result, respStatue in | ||
| 149 | + guard let self = self else { return } | ||
| 150 | + if respStatue == .success { | ||
| 151 | + let listArray = (result as! [Any]).first as! [CNLiveAlbumListModel] | ||
| 152 | + self.dataSource.addObjects(from: listArray) | ||
| 153 | + if self.tableView.mj_footer != nil { | ||
| 154 | + self.tableView.mj_footer?.endRefreshing() | ||
| 155 | + } | ||
| 156 | + self.tableView.reloadData() | ||
| 157 | + let hasNextPage = (result as! [Any])[1] as! Bool | ||
| 158 | + if listArray.count == 0 { | ||
| 159 | + if !hasNextPage { | ||
| 160 | + self.tableView.mj_footer?.endRefreshingWithNoMoreData() | ||
| 161 | + self.tableView.reloadData() | ||
| 162 | + } | ||
| 163 | + } | ||
| 164 | + } else { | ||
| 165 | + if self.tableView.mj_footer != nil { | ||
| 166 | + self.tableView.mj_footer?.endRefreshing() | ||
| 167 | + } | ||
| 168 | + self.tableView.contentOffset = CGPoint.zero | ||
| 169 | + self.tableView.refreshControl?.endRefreshing() | ||
| 170 | + if self.dataSource.count == 0 { | ||
| 171 | + self.tableView.reloadEmptyDataSet() | ||
| 172 | + } | ||
| 173 | + } | ||
| 174 | + } | ||
| 175 | + } | ||
| 176 | + | ||
| 120 | required init?(coder: NSCoder) { | 177 | required init?(coder: NSCoder) { |
| 121 | fatalError("init(coder:) has not been implemented") | 178 | fatalError("init(coder:) has not been implemented") |
| 122 | } | 179 | } |
| @@ -129,9 +186,10 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | @@ -129,9 +186,10 @@ class CNLiveShortVideoContentListView: UIView, UITableViewDelegate, UITableViewD | ||
| 129 | removeFromSuperview() | 186 | removeFromSuperview() |
| 130 | } | 187 | } |
| 131 | 188 | ||
| 132 | - static public func showVideoContentListView(title: String,dataArray: NSMutableArray,episodeNow: String ,result: @escaping CloseVideoListResultBlock) { | 189 | + static public func showVideoContentListView(aid: String,title: String,dataArray: NSMutableArray,episodeNow: String ,result: @escaping CloseVideoListResultBlock) { |
| 133 | 190 | ||
| 134 | let pickerView = CNLiveShortVideoContentListView.init(frame: CGRect.zero) | 191 | let pickerView = CNLiveShortVideoContentListView.init(frame: CGRect.zero) |
| 192 | + pickerView.aid = aid | ||
| 135 | pickerView.resultBlock = result | 193 | pickerView.resultBlock = result |
| 136 | pickerView.setupWithDataSource(title: title,dataArray: dataArray,episodeNow: episodeNow) | 194 | pickerView.setupWithDataSource(title: title,dataArray: dataArray,episodeNow: episodeNow) |
| 137 | 195 | ||
| @@ -167,6 +225,9 @@ extension CNLiveShortVideoContentListView { | @@ -167,6 +225,9 @@ extension CNLiveShortVideoContentListView { | ||
| 167 | self.resultBlock(dataSource[indexPath.row] as! CNLiveAlbumListModel) | 225 | self.resultBlock(dataSource[indexPath.row] as! CNLiveAlbumListModel) |
| 168 | closeMethod() | 226 | closeMethod() |
| 169 | } | 227 | } |
| 228 | + func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? { | ||
| 229 | + return UIImage(named: "short_video_default") | ||
| 230 | + } | ||
| 170 | } | 231 | } |
| 171 | 232 | ||
| 172 | class CNLiveShortVideoContentListTableViewCell: UITableViewCell { | 233 | class CNLiveShortVideoContentListTableViewCell: UITableViewCell { |