#ios #arrays #swift #uitableview
#iOS #массивы #swift #uitableview
Вопрос:
У меня есть две кнопки в моей tableViewCell, которые подтверждают и игнорируют, эти две кнопки должны удалять ячейку при нажатии, чтобы она успешно удаляла ячейку, но когда я обновляю ее, она возвращается. Как я могу навсегда удалить данные в массиве при нажатии игнорировать или подтвердить.
Сначала массив был исключительно в activityArray, но мне нужно отфильтровать его, чтобы получить ожидающую активность.
if activities.count > 0 {
let filtered = activities.filter { $0.activityTypeAction == .FriendRequest || $0.activityTypeAction == .EventRSVPInvite }
if self.kCurrentPage == 0 {
self.activityArray.removeAll()
self.pendingActivityArray.removeAll()
}
self.activityArray.append(contentsOf: activities)
self.pendingActivityArray.append(contentsOf: filtered)
}
Вот как я удаляю ячейку.
cell.onClinkedIgnoreCallback = {
self.pendingActivityArray.remove(at: indexPath.row)
self.NotificationTableView.deleteRows(at: [indexPath], with: .left)
self.NotificationTableView.reloadData()
}
cell.onClickedConfirmCallback = {
self.pendingActivityArray.remove(at: indexPath.row)
self.NotificationTableView.deleteRows(at: [indexPath], with: .left)
self.NotificationTableView.reloadData()
}
Комментарии:
1. Как вы обновляете данные? Путем перехода от одного представления к другому или перезагрузки табличного представления?
2. @KrunalNagvadia я перезагружаю tableview. у меня есть это
if (indexPath.row == activityArray.count - 1) { loadMoreActivity() }
, где в моем loadMoreActivity есть следующийif activities.count > 0 {....}
приведенный выше код.3. Не связано, но никогда не вызывается
reloadData
сразу послеdeleteRows
. Удаление строк обновляет представление таблицы. И естьisEmpty
для типов коллекций и строк, которые более эффективны, чем.count == 0
Ответ №1:
вам не нужно вызывать эту функцию для обновления, потому что она снова заполняет данные в соответствующих массивах, поэтому, если вы хотите обновить его, просто вызовите tableview.reloadData()
Комментарии:
1. я не буду вызывать loadMoreActivity()?
2. Только один раз, чтобы назначить данные массивам
3. я этого не понимаю. у меня есть ActivityArray, тогда мой pendingArray зависит от него, поэтому каждый раз, когда я перезагружаю / обновляю представление, мой pendingArray копирует мой ActivityArray есть ли способ, чтобы мой pendingArray не влиял на каждый раз, когда я обновляюсь?
4. установите флажок в pendingarray в loadMoreActivity () в соответствии с вашими потребностями, чтобы он не обновлялся, если вам это не нужно
5. так, например, у меня есть это
let filtered = activities.filter { $0.activityTypeAction == .FriendRequest || $0.activityTypeAction == .EventRSVPInvite }
, могу ли я сделать что-то подобноеfiltered.removeAll(where: {$0.activityTypeAction == .FriendAccept} )
, тогда я добавлю этоself.pendingActivityArray.append(contentsOf: filtered)