iOS/코드조각

[iOS, Swift] 테이블뷰 안의 테이블셀 버튼 클릭하기 (delegate)

검은참깨두유vm 2022. 8. 10. 21:00
반응형

iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다.

 

import UIKit

protocol CustomTableCellDelegate: AnyObject {
	func didTapButton()
}

class CustomTableCell: UITableViewCell {

	// 스토리보드에 있는 버튼
	@IBOutlet var button: UIButton
	var delegate: PushTableViewCellDelegate?
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        // 버튼 클릭 이벤트 추가
		button.addTarget(self, action: #selector(didTapButton(_:)), for: .touchUpInside)
    }
    
    required init?(coder: NSCoder) {
        fatalError()
    }
    
    /// cell 안의 버튼 클릭 시 실행 이벤트
    @objc func didTapButton(_ sender: UIButton) {
    	delegate?.didTapButton(sender)
    }
   
}

 

import UIKit

extension MainViewController: UITableViewDelegate, UITableViewDataSource {
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: CustomTableCell.identifier, for: indexPath) as! CustomTableCell
        
        // delegate 설정
        cell.delegate = self
        
        return cell
    }
}

extension MainViewController: CustomTableCellDelegate {
	func didTapButton() {
    	// 버튼 클릭시 실행할 코드 입력..
    }
}
반응형