как сохранить действие нажатия кнопки внутри ячейки, чтобы я мог добавить изображение без его дублирования или исчезновения - PullRequest
0 голосов
/ 04 января 2019

У меня есть tableViewController, который имеет три функции, две из которых работают успешно.

  1. Добавление ячеек нажатием кнопки внутри панели инструментов = работает

  2. Возможность вставлять текст в UITextView внутри ячейки, без дублирования и перемещения текста = работает

  3. Когда нажата кнопка в ячейке, появляется checkMarkImage без дублированиякогда прокрутка и перемещение = не работают

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

конфигурация кнопки внутри моего customCellClass:

 @IBAction func checkMarkButton(_ sender: UIButton) {

    if checkedOff{
        UIImageView.animate(withDuration: 0.3, delay: 0, options: [], animations: {

        self.checkMarkImage.alpha = 0.0
        self.notesTextView.isEditable = true
        self.notesTextView.textColor = .white
        self.checkedOff = false
        },completion: nil)
        }

    else{
        UIImageView.animate(withDuration: 0.3, delay: 0, options: [], animations: {

        self.checkMarkImage.alpha = 1.0
        self.notesTextView.isEditable = false
        self.notesTextView.textColor = .orange
        self.checkedOff = true
            }, completion: nil)
    }

}

Обработка ячейки внутри cellForRowAt:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cellIdentifier = "TableViewNotesCell"
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! TableViewNotesCell

    cell.notesTextView.text = cellNumber[indexPath.row]




    if cellNumber[indexPath.row] < "  "{
        print("celltext is less than nothing")
        cell.notesTextView.textColor = .white
        cell.notesTextView.isEditable = true
        cell.checkMarkImage.alpha = 0.0
    }
    else{
        if cell.checkedOff{
            print("cell has been checked off")
            cell.notesTextView.textColor = .orange
            cell.notesTextView.isEditable = false
            cell.checkMarkImage.alpha = 1.0
        }
    }

Я ожидаю, что checkMarkImage ячейки останется в ячейке, в которой нажата кнопка, но фактический эффект заключается в том, что checkMarkImage повторяется при прокрутке, а иногда и вовсе исчезает

1 Ответ

0 голосов
/ 04 января 2019

Боюсь, что этим вы не достигнете желаемого результата.Вы должны сохранить свои данные, когда используете UITableView или UICollectionView, потому что они повторно используют Cell при прокрутке.поэтому, когда вы прокручиваете UITableView, вы получаете дублированное изображение или иногда теряете его.то, что вы можете сделать:

  1. Использовать массив словаря как dataSource для сохранения ваших данных для TableView.
  2. вы также можете создать свою собственную модель и использовать в качестве источника данныхиз TableView.
  3. , и если ваши данные достаточно велики, вы можете выбрать CoreData / Sqllight.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...