SWIFT/UIKit

[UIKit] 테이블뷰 셀안에 있는 버튼 클릭 이벤트 처리하기 -델리게이트 패턴

늘스토리 주인장 2022. 8. 6. 03:10
728x90
반응형

 

[델리게이트패턴 사용하기]

 

 

 

 

테이블뷰셀에서 일단 누르고 싶은 버튼에 클릭이벤트 생성하기

    @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

 

 

 

728x90
반응형