2016-09-01 1 views
1

У меня есть UITableView, и я бы хотел, чтобы кран в ячейке X заставил текст ярлыка в ячейке Y измениться с «Ожидание ...» на «Готово». Я довольно озадачен тем, как я должен это делать. Я попытался сделать это, используя didSelectRowAtIndexPath, но, по-видимому, я могу только модифицировать свойства ячейки в строке, на которой он постучал.Swift - 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, поэтому, если вы просто скопируете код, вам нужно обновить некоторые операторы. – pedrouan

+0

Это то, с чем я пошел - работает отлично. Спасибо! –

1

Решение будет обновлять источник данных вашего Tableview.

Когда пользователь нажимает на ячейку, вызывается didSelectRowAtIndexPath. В этой функции вы можете обновить источник данных, чтобы спровоцировать изменения в других ячейках, а затем вызвать reloadData для применения изменений.

Когда вы звоните reloadData tableView обновляется cellForRowAtIndexPath. Эта функция использует ваш источник данных для обновления ячейки.