저는 UITableView를 가지고 있는데 셀 Y의 레이블 텍스트가 "대기 중 ..."에서 "완료"로 변경되도록 셀 X의 탭을 원합니다. 나는 이것에 대해 어떻게해야하는지에 대해 꽤 당황 스럽다. didSelectRowAtIndexPath
을 사용하여이 작업을 시도했지만 외관상으로는 탭의 행에서 셀의 속성 만 수정할 수 있습니다.스위프트 - UITableview : 한 셀을 탭하면 다른 셀의 레이블이 변경됩니까?
감사합니다.
저는 UITableView를 가지고 있는데 셀 Y의 레이블 텍스트가 "대기 중 ..."에서 "완료"로 변경되도록 셀 X의 탭을 원합니다. 나는 이것에 대해 어떻게해야하는지에 대해 꽤 당황 스럽다. didSelectRowAtIndexPath
을 사용하여이 작업을 시도했지만 외관상으로는 탭의 행에서 셀의 속성 만 수정할 수 있습니다.스위프트 - UITableview : 한 셀을 탭하면 다른 셀의 레이블이 변경됩니까?
감사합니다.
그것의 아주 변경할 필요가 셀을 쉽게 얻을 수 있지만, 당신은 당신의 테이블의 어떤 행을 알고 있습니다
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"
}
...
}
해결책은 당신의 tableview의 데이터 소스를 업데이트하는 것입니다.
사용자가 셀을 탭하면 didSelectRowAtIndexPath
이 호출됩니다. 이 함수에서 다른 셀의 변경을 유발하도록 데이터 소스를 업데이트 한 다음 reloadData
을 호출하여 변경 내용을 적용 할 수 있습니다.
reloadData
으로 전화 할 때 tableView는 cellForRowAtIndexPath
에 의해 업데이트됩니다. 이 함수는 데이터 소스를 사용하여 셀을 업데이트합니다.
Swift 3.0에서 코드를 작성 했으므로 코드를 copypaste하면 일부 문장을 업데이트해야합니다. – pedrouan
이것은 내가 함께 간 것입니다 - 완벽하게 작동합니다. 고맙습니다! –