2016년 2월 25일 목요일

테이블 뷰셀에 버튼 이벤트 처리 하기

테이블 뷰셀에 on/off 를 표시하는 버튼이 있다고 할때

동적 테이블뷰에 수많은 테이블 뷰 셀에 on/off를 처리 할려면 어떻게 해야 하나?

tableViewCell 클래스 코드에 evnent를 작성한다.??

물론 보여주기만 한다면 가능 하다.

outlet을 tableView.xib에서 tableViewCell 클래스로 버튼을 연결해서 이벤트코드를 작성 하면
보여주는 기능 만 처리 할때는 충분 하다.


하지만 이를 이용하는  TableViewController 에서 어떤 talbeViewCell이 on인지 off인지
어떻게 알아 차릴수가 있을까?

이렇게 접근하면 곤란 하다.

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
       cell.onoffButton.tag = indexPath.row
        cell.onoffButton.addTarget(self, action: "onoffButtonConnected:", forControlEvents: .TouchUpInside)
        
        return cell
}

위와 같이 onoffButton  (테이블뷰셀에 버튼) 에 tag 값을 해당 row의 indexPath.row로 설정 하고
이벤트 함수를  addTarget을 이용해서 걸어 준다.

    func onoffButtonConnected(sender : UIButton!) {
        sender.selected = !sender.selected
        
        if self.morningcalldata[sender.tag]["setting"] == "ON" {
           self.morningcalldata[sender.tag]["setting"] = "OFF"
        } else {
           self.morningcalldata[sender.tag]["setting"] = "ON"
        }
    }


이벤트 함수에서는 tag 값을 다시 index로 이용하여 데이터 처리까지 할 수 있다.

댓글 없음: