Выбор сразу нескольких ячеек таблицы в Swift
Я пытаюсь создать список добавления друзей, где пользователь выбирает несколько ячеек табличного представления, и для каждого выбора отображается настраиваемая проверка. Я изначально использовал didSelectRowAtIndexPath
, но это не дало мне результатов, которые я ищу, так как вы можете выделить несколько ячеек, но если вы не выделите исходную выбранную строку, вы не сможете больше выбирать. Затем я попытался с помощью didHighlighRowAtIndexPath
, но это, похоже, не работает, потому что теперь я получаю нулевое значение для моего indexPath. Вот мой код:
override func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = tableView.indexPathForSelectedRow
let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as! AddedYouCell
let currentUser = PFUser.currentUser()?.username
let username = currentCell.Username.text
print(currentCell.Username.text)
let Friends = PFObject(className: "Friends");
Friends.setObject(username!, forKey: "To");
Friends.setObject(currentUser!, forKey: "From");
Friends.saveInBackgroundWithBlock { (success: Bool,error: NSError?) -> Void in
print("Friend has been added.");
currentCell.Added.image = UIImage(named: "checked.png")
}
}
Как я могу решить это? Спасибо
1 ответ
Я не собираюсь писать код для вас, но это должно помочь вам на вашем пути:
Чтобы достичь своей цели, вы должны отделить данные от ваших представлений (ячеек). Используйте массив (т.е. friendList), чтобы сохранить список друзей и выбранное состояние каждого из них, и используйте этот массив для заполнения вашего tableView.
numberOfCellsForRow равно friendList.count
В didSelectRowAtIndexPath используйте indexPath.row, чтобы изменить состояние вашего представления (ячейки) и установить состояние для того же индекса в вашем массиве.
В cellForRowAtIndexpath используйте indexPath.row, чтобы получить из массива начальное состояние ячейки.