2016-09-01 4 views
1

저는 UITableView를 가지고 있는데 셀 Y의 레이블 텍스트가 "대기 중 ..."에서 "완료"로 변경되도록 셀 X의 탭을 원합니다. 나는 이것에 대해 어떻게해야하는지에 대해 꽤 당황 스럽다. didSelectRowAtIndexPath을 사용하여이 작업을 시도했지만 외관상으로는 탭의 행에서 셀의 속성 만 수정할 수 있습니다.스위프트 - UITableview : 한 셀을 탭하면 다른 셀의 레이블이 변경됩니까?

감사합니다.

답변

3

그것의 아주 변경할 필요가 셀을 쉽게 얻을 수 있지만, 당신은 당신의 테이블의 어떤 행을 알고 있습니다

class MyCell : UITableViewCell { 

    @IBOutlet weak var myLabel: UILabel! 

} 

class TableViewController: UITableViewController { 

    ... 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     let row = 7 //or what you set 
     let cellWhereIsTheLabel = tableView.cellForRow(at: IndexPath(row: row, section: 0)) as! MyCell 
     cellWhereIsTheLabel.myLabel.text = "Done" 

    } 

    ... 

} 
+0

Swift 3.0에서 코드를 작성 했으므로 코드를 copypaste하면 일부 문장을 업데이트해야합니다. – pedrouan

+0

이것은 내가 함께 간 것입니다 - 완벽하게 작동합니다. 고맙습니다! –

1

해결책은 당신의 tableview의 데이터 소스를 업데이트하는 것입니다.

사용자가 셀을 탭하면 didSelectRowAtIndexPath이 호출됩니다. 이 함수에서 다른 셀의 변경을 유발하도록 데이터 소스를 업데이트 한 다음 reloadData을 호출하여 변경 내용을 적용 할 수 있습니다.

reloadData으로 전화 할 때 tableView는 cellForRowAtIndexPath에 의해 업데이트됩니다. 이 함수는 데이터 소스를 사용하여 셀을 업데이트합니다.

관련 문제