2022. 8. 6. 03:10ㆍiOS/UIKit
[델리게이트패턴 사용하기]
테이블뷰셀에서 일단 누르고 싶은 버튼에 클릭이벤트 생성하기
@IBAction func btnMoreAction(_ sender: Any) {
}
그리고 테이블뷰에 프로토콜 생성
protocol BtnMoreDelegate {
func btnMoreAction(index: Int)
}
자신이 원하는 메소드를 작성, 파라미터는 자신의 인덱스 번호를 알아야하기 때문에 index를 가져오는 것으로 작성
class TableViewCell: UITableViewCell {
var btnMoreDelegate: BtnMoreDelegate?
...
}
객체? 하나 생성한 후에
@IBAction func btnMoreAction(_ sender: Any) {
self.btnMoreDelegate?.btnMoreAction(index: cellIndex)
}
버튼 이벤트에다가 내가 만들어준 프로토콜 메소드를 적어준다. 파라미터는 나중에 설정!
그리고 이제 저 메소드에 대해서 설정을 해줘야한다
이제 테이블뷰가 있는 뷰컨으로 간다
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
테이블뷰 델리게이트의 기본메소드에다가 델리게이트를 연결시켜준다
cell.btnMoreDelegate = self
extension ViewController: BtnMoreDelegate{
func btnMoreAction(index: Int) {
print("여기보세요 \(index)")
}
}
그리고 연결한 메소드를 뷰컨에서 만들어주면 된다!!!!
이제 인덱스를 가져오는 파라미터를 설정해줄 건데
var cellIndex: Int = 0
인덱스를 테이블뷰셀 파일에 초기화해준다 테이블뷰에서 이제 이거를 연결시켜주면 된다
cell.cellIndex = indexPath.row
델리게이트 연결시켜주는 함수안에다 설정해준다.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.section {
case 0:
...
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
cell.cellIndex = indexPath.row
cell.btnMoreDelegate = self
//테이블뷰셀에 데이터를 넣어주는 메소드
setCellValue(cell: cell, indexPath: indexPath)
cell.selectionStyle = .none
return cell
default:
return UITableViewCell()
}
메소드 전체를 보면 이렇게 된다
이렇게 되면 이제 테이블뷰셀에 있는 버튼을 인덱스별로 클릭하는 것을 할 수 있다!!!
아직 델리게이트가 헷갈리지만 더 공부해야겠다
2022.09.01 - [분류 전체보기] - [iOS/Swift] 테이블뷰 셀안에 있는 버튼 클릭 이벤트 처리하기 (자세히) -델리게이트 패턴
[iOS/Swift] 테이블뷰 셀안에 있는 버튼 클릭 이벤트 처리하기 (자세히) -델리게이트 패턴
테이블뷰 클릭이벤트만들기 (참고) 더보기 2022.08.14 - [STUDY(스터디)/iOS] - [iOS/Swift] 테이블뷰 만들기 & 테이블뷰 셀 클릭이벤트 [iOS/Swift] 테이블뷰 만들기 & 테이블뷰 셀 클릭이벤트 스토리보드에
nlestory.tistory.com