Невозможно изменить заголовок UITableViewRowAction с Favorite на Remove, если данные существуют в массиве swift - PullRequest
0 голосов
/ 06 октября 2019

При перемещении влево по ячейке таблицы появляется кнопка с заголовком «Избранное», которая сохраняет текущий заголовок строки по умолчанию при повторном смахивании влево по той же кнопке. Кнопка «Избранное» удаляет текущий заголовок ячейки из массива по умолчанию. Во второй раз, когда я проведу пальцем влево, я хочу заголовок «Удалить, а не избранное». Пожалуйста, помогите.

 func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

        var titleFavoriteButton = "Favorite"
        let favorite = UITableViewRowAction(style: .normal, title: 
         "Favorite") { [unowned self] (action, indexPath) in

        let defaults = UserDefaults.standard
        var favorites = defaults.array(forKey: "favorites") as? [String] ?? []

            if let datastring = itemList[indexPath.row] as? String {
                if favorites.contains(datastring) {
                    favorite.title = "Remove"
                     favorites.remove(at: favorites.index(of: datastring)!)
            } else {
                    favorites.append(datastring)
            }
            defaults.set(favorites, forKey: "favorites")
            }
            print(favorites)
                }
             return [favorite]
 }

Вот рабочий вывод Here is the working output

1 Ответ

2 голосов
/ 06 октября 2019

Вы должны проверить, существует ли избранное до создания действия

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

    let defaults = UserDefaults.standard
    var favorites = defaults.array(forKey: "favorites") as? [String] ?? []
    let item = itemList[indexPath.row]

    let favoriteIndex = favorites.firstIndex(of: item)
    let actionTitle = favoriteIndex == nil ? "Favorite" : "Remove"
    let favorite = UITableViewRowAction(style: .normal, title: actionTitle) { (action, indexPath) in
        if let index = favoriteIndex {
            favorites.remove(at: index)
        } else {
            favorites.append(item)
        }

        defaults.set(favorites, forKey: "favorites")
        print(favorites)
    }
    return [favorite]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...