2016-09-01 24 views
1

私はUITableViewを持っていて、セルYのラベルテキストを "Waiting ..."から "Done"に変更させるために、セルXのタップが必要です。私はこれについてどうやってどうやって行かなければならないのか、とても困惑しています。私はdidSelectRowAtIndexPathを使ってこれをしようとしましたが、一見したところ、タップした行のセルのプロパティだけを変更できます。スイフト - UITableview:1つのセルをタップすると、別のセルのラベルが変更されますか?

ありがとうございます!

答えて

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でコードを書いています。コードを複写するだけなら、いくつかの文を更新する必要があります。 – pedrouan

+0

これは私が行ったことです - 完全に動作します。ありがとうございました! –

1

ソリューションは、あなたのテーブルビューのデータソースを更新することになります。

ユーザーがセルをタップすると、didSelectRowAtIndexPathが呼び出されます。この関数では、データソースを更新して他のセルの変更を呼び出すことができ、変更を適用するにはreloadDataを呼び出します。

reloadDataを呼び出すと、tableViewはcellForRowAtIndexPathによって更新されます。この関数は、データソースを使用してセルを更新します。

関連する問題