728x90
반응형
안녕하세요 욱승임다 ㅋ
좋은 주말보내고 계신가요? ㅎㅎ
이번포스팅에서는 UITableView Cell을 밀어서 삭제하는 동작을 구현해볼게요
예제
예제 코드
import Foundation
import UIKit
import SnapKit
class SwipeToDeleteCellViewController: UIViewController, UIViewControllerAttribute {
var navTitle: String?
var lastContentOffset: CGFloat = 0.0
var tableViewArray: [Int] = []
lazy var tableView = UITableView().then {
$0.delegate = self
$0.dataSource = self
$0.register(TitleTableViewCell.self, forCellReuseIdentifier: "TitleTableViewCell")
}
override func viewDidLoad() {
super.viewDidLoad()
setTableViewArray()
setNavigationBar()
setUI()
setAttributes()
bindRx() // 미사용 함수
}
func setTableViewArray() {
for x in 0...100 {
tableViewArray.append(x)
}
}
func setNavigationBar() {
self.navigationItem.title = navTitle ?? ""
}
func setUI() {
self.view.backgroundColor = .white
self.view.addSubview(tableView)
}
func setAttributes() {
tableView.snp.makeConstraints {
$0.edges.equalTo(self.view.safeAreaLayoutGuide)
}
}
/// 미사용 함수
func bindRx() {
}
}
extension SwipeToDeleteCellViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableViewArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TitleTableViewCell", for: indexPath) as! TitleTableViewCell
cell.title.text = String(tableViewArray[indexPath.row])
return cell
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
tableView.beginUpdates() // beginUpdate
tableView.deleteRows(at: [indexPath], with: .fade) // 셀 삭제 애니메이션 설정
tableViewArray.remove(at: indexPath.row) // 데이터 소스에서 해당 셀의 데이터 삭제
tableView.endUpdates() // endUpdate
}
}
}
예제로 0부터 100까지 숫자를 배열에 append 하여 예제 코드를 짰슴
중요한 부분은 맨밑 tableViwe commit
.delete 될때 하는 동작들을 유심히 봐둘것!
결론
포스팅 길이가 짧은만큼 간단하게 구현 가능한 기능! 🤭
GitHub
728x90
반응형
'iOS > Swift' 카테고리의 다른 글
[Swift] Hotspot Configuration, 핫스팟 연결 (1) | 2023.05.24 |
---|---|
[Swift] RxSwift+MVVM, Sign In with Apple 애플 로그인 (0) | 2023.05.23 |
[Swift] ScrollView 스크롤 네비게이션바 hide On/Off (1) | 2023.05.19 |
[Swift] UITabbar, 하단 탭바 구현 (0) | 2023.04.30 |
[iOS] Background, Inactive(Foreground) 진입시 화면가리기 (0) | 2023.03.23 |