, если все, что вы когда-либо один выбранный ряд в то время, то даже без модели данных (которые вы должны), вы могли бы иметь атрибут ViewController selectedRowIndex
который обновляется каждый раз, когда вы выбираете строку, и освежить Tableview - как часть cellForRowAtIndexPath
вы можете проверить, если indexPath.row == selectedRowIndex и сделать все, что визуальные изменения вам нужно
определить атрибут для отслеживания текущей выбранной строки
var selectedRowIndex = -1
затем обновить этот атрибут, когда пользователь выбирает строку
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
// build up an array of rows to be refreshed
// the previously selected row (if any)
// and the current one
var indexPaths : [NSIndexPath] = []
// if a row was previous selected, clear the display
if selectedRowIndex != -1
{
indexPaths.append(NSIndexPath(forRow: selectedRowIndex, inSection: 0))
}
selectedRowIndex = indexPath.row
indexPaths.append(NSIndexPath(forRow: selectedRowIndex, inSection: 0))
// now refresh just those rows
self.tableView.reloadRowsAtIndexPaths(indexPaths, withRowAnimation: UITableViewRowAnimation.None)
}
, а затем сделать что-то с ним, когда строка перерисовывается
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) as! MyCell
if indexPath.row == selectedRowIndex
{
cell.backgroundColor = UIColor.greenColor()
}
else
{
cell.backgroundColor = UIColor.whiteColor()
}
// everything else
return cell
}
Вам нужно будет сохранить состояние ячейки в массиве, а затем использовать его в cellForRowAtIndexPath, чтобы различать, какая ячейка должна быть выбрана, а какая нет. –
И как отменить выбор выбранного после. Сейчас я просто хочу заставить его работать в одной ячейке.Но идея массива будет необходима, поскольку у меня есть целое меню, которое я реализую для работы с этой функцией. – irkinosor
Вам нужно реализовать didSelectRowAtIndexPath и didDeselectRowAtIndexPath, –