컬렉션뷰의 당겨서 새로고침 기능을 구현하기 위한 UIRefreshControl 추가해 보겠다.
extension UICollectionView {
var reloadDataCompletionBlock: (() -> Void)?
func reloadDataWithCompletion(_ completion:@escaping () -> Void) {
reloadDataCompletionBlock = completion
super.reloadData()
}
override func layoutSubviews() {
super.layoutSubviews()
if let block = self.reloadDataCompletionBlock {
block()
}
}
}
extension UserViewController {
func viewUpdate(rst: Int, rstMessage: String) {
if rst != API_SUcCESS {
DispatchQueue.main.async { [weak self] in
// reload 후 완료되면 refresh 컨트롤 해제
self?.collectionView.reloadDataWithCompletion {
self?.homeCollectionView.reloadDataCompletionBlock = nil
self?.refreshControl.endRefreshing()
}
}
}
}
}
class UserViewController: UIViewController {
lazy var refreshControl: UIRefreshControl = {
let refreshCtl = UIRefreshControl()
refreshCtl.tintColor = .darkGray
refreshCtl.addTarget(self, action: #selector(refresh), for: .valueChanged)
return refreshCtl
}()
@IBOutlet weak var collectionView:UICollectionView! {
didSet {
collectionView.register(UserCell.self)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.bounces = true
collectionView.alwayBounceVertical = true
//리플래시 컨트롤을 컬렉션뷰에 추가
collectionView.addSubview(refreshControl)
}
}
@objc func refresh() {
// 여기서 새로 고침
DispatchQueue.main.async { [weak self] in
self?.userViewModel.removeAllData()
self?.userViewModel.requestModelData()
}
}
}
'Swift > UICollectionView' 카테고리의 다른 글
[SWIFT]UICollectionView register 단순화 하기 (0) | 2023.06.15 |
---|---|
[SWIFT]UICollectionViewCell Extention IndexPath 구하기 (0) | 2023.04.26 |
[SWIFT]현재 화면 중앙에 보여지고 있는 Cell의 IndexPath가져오기 (0) | 2023.04.26 |
[SWIFT]UICollectionView 백그라운드 Empty Message 추가 (0) | 2023.04.26 |
[SWIFT]register / dequeueReusableCell 편하게 사용하기 (0) | 2023.04.26 |