UITableViewCell에서 만든 Button에 기능 추가

6885 단어 Swift

이번 내용





기능 설명


  • 셀에 표시된 하트 모양의 버튼을 누르면 버튼의 배경 이미지가 변경됩니다.
  • Button의 초기 상태는 하트 안쪽이 흰색입니다. 누르면 전체 하트가 파란색 이미지로 바뀝니다.

  • 코드와 간략한 설명



    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {}


  • 셀 만들기
  • cellHeartButton을 셀의 UIButton으로 만듭니다.
  • cellHeartButton.tag = indexPath.row 는, Button 를 눌렀을 때에 어느 Button 가 눌렸는지, 판별하기 위해서 Button 에 Tag 를 설정하고 있습니다.
  • cellHeartButton.addTarget(self, action: #selector(goodOrNoGood), for: .touchDown) 는, Button 를 눌렀을 때의 처리를 추가합니다.
  • 
    let cellContentsArray = ["1","2","3","4","5","6","7","8","9","10"]
    
               ~~~一部省略~~~ 
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
            let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    
            let cellContentsLabel = cell.contentView.viewWithTag(1) as! UILabel
            let cellHeartButton = cell.contentView.viewWithTag(2) as! UIButton
    
            cellContentsLabel.text = cellContentsArray[indexPath.row]
    
            cellHeartButton.tag = indexPath.row
            cellHeartButton.addTarget(self, action: #selector(goodOrNoGood), for: .touchDown)
    
            return cell
        }
    

    #selector(goodOrNoGood)


  • if sender.backgroundImage(for: .normal) == UIImage(systemName: "heart"){} 에서 Button 이미지가 UIImage(systemName: "heart") 이면 UIImage(systemName: "heart.fill") 로 변경됩니다.

  • goodOrNoGood
        @objc func goodOrNoGood(sender:UIButton){
    
            if sender.backgroundImage(for: .normal) == UIImage(systemName: "heart"){
    
                sender.setBackgroundImage(UIImage(systemName: "heart.fill"), for: .normal)
                print(sender.tag)
    
            }else{
    
                sender.setBackgroundImage(UIImage(systemName: "heart"), for: .normal)
                print(sender.tag)
    
            }      
        }
    



    지적, 질문 등 있으면, 코멘트까지 부탁드립니다.

    좋은 웹페이지 즐겨찾기