как я могу сохранить проверенные строки таблицы в userdefault?

Я столкнулся с той же проблемой, что и в этом вопросе:

как я могу сохранить выбранные строки таблицы в nsuserdefaults в swift 3

Однако мне интересно узнать, как повторно заполнить сохраненные строки, которые были отмечены галочкой?

Благодарю вас!


person javadoe    schedule 18.08.2018    source источник


Ответы (1)


Создайте переменную с didSet, чтобы мы могли перезагрузить таблицу после присвоения ей значения.

var selectedRows: [Int] = [] {
    didSet {
        myTableView.reloadData()
    }
}

В viewDidLoad() присвоить значение selectedRows из userDefaults

override func viewDidLoad() {
    super.viewDidLoad()        
    selectedRows = UserDefaults.standard.value(forKey: "selectedRows") as? [Int] ?? []
}

Используйте этот код для обновления ячейки.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: .default, reuseIdentifier: "myCell")
    cell.textLabel?.text = "\(indexPath.row)"
    cell.accessoryType = selectedRows.contains(indexPath.row) ? .checkmark : .none

    return cell
}

Наконец, в didSelectRowAt используйте эту логику, чтобы обновить переменную selectedRows и сохранить ее в userDefaults.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if selectedRows.contains(indexPath.row) {
        self.selectedRows = selectedRows.filter{$0 != indexPath.row}
    }else{
        self.selectedRows.append(indexPath.row)
    }
    UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}

Я надеюсь, что это полезно. Дайте мне знать, если у вас возникнет путаница.

Спасибо

person Santosh    schedule 20.08.2018
comment
Большой. Было бы намного лучше, если бы вы могли проголосовать и отметить как ответивший. ???? - person Santosh; 19.10.2018
comment
@DilipTiwari, можешь подробнее объяснить? Где вы хотите показать изображение? И с вышеуказанной стоимостью вы получите выбранную ячейку, которая была выбрана в последний раз. Если вы имеете в виду другое о выборе, дайте мне знать. - person Santosh; 01.05.2019
comment
вы можете посетить мой веб-сайт santoshm.com.np и задать мне вопрос там. - person Santosh; 01.05.2019
comment
@DilipTiwari, это решение для тебя. santoshm.com.np/2019/05/01 /store-selected-cell-in-tableview - person Santosh; 01.05.2019