Реализация переключателя ячейки быстрого просмотра таблицы - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно установить переключатель в пользовательской ячейке таблицы.всякий раз, когда пользователь щелкает ячейку или кнопку просмотра таблицы, переключатели должны работать.Я попытался с помощью приведенного ниже кода, но не очень хорошо.

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

        let cell:TableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! TableViewCell

        cell.country.text = self.animals[indexPath.row]

        cell.selectionStyle = UITableViewCellSelectionStyle.none;

        if selectedRows.contains(indexPath)
        {
            cell.radioButton.setImage(UIImage(named:"check.png"), for: .normal)
        }
        else
        {
            cell.radioButton.setImage(UIImage(named:"uncheck.png"), for: .normal)
        }

        return cell
    }

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вот отличное решение для создания переключателей в UITableView с использованием раскадровки, которая требует ноль кода - и имеет 2 отличных Cool Tips !!

  • Убедитесь, что для представления таблицы установлено значение Одиночный выбор и для использования Статические ячейки .

  • Добавьте ячейку Basic , установите изображение в качестве непроверенного изображения кнопки и убедитесь, что выбран стиль По умолчанию

enter image description here

  • Полезный совет № 1: Нажмите и выберите вид изображения ячейки, а затем установите его выделенное изображение для проверки вашего состояния.Когда ячейка выделена или выделена, вид изображения внутри изменится, чтобы показать ее выделенное состояние.

enter image description here

  • Полезный совет № 2: Затем перетащите UIView в представление содержимого ячейки за текстовой меткой.Поскольку вы используете базовую ячейку, вы не сможете поместить ее непосредственно в ячейку, вместо этого вам нужно будет перетащить ее в схему документа слева.Затем подключите это к выбранному фоновому представлению ячейки выход.Когда ячейка выбрана (или выделена), этот вид будет отображаться в фоновом режиме.В этом случае мы собираемся использовать его для предотвращения появления серого фона, поэтому установите его цвет на Очистить .Обратите внимание, что не имеет значения, какой размер у представления, и нет необходимости устанавливать какие-либо ограничения - он автоматически изменяется в соответствии с ячейкой во время выполнения.

enter image description here

  • Наконец, продублируйте эту ячейку и измените текст для каждого параметра переключателя.Создайте и запустите, и у вас есть радио-кнопки без кода!

image

0 голосов
/ 19 сентября 2018

В вашем классе TableViewCell почему бы вам не создать элемент источника данных и не переопределить для него didSet.также в вашем источнике данных для UITableView я бы порекомендовал массив чего-то большего, чем просто String.

Я не скомпилировал нижеприведенное, так что это всего лишь идея.

import UIKit

class TableViewCell : UITableViewCell {
    var data: Animal? {
        didSet {
            self.country.text = data.description
            if (data.isSelected) {
                self.radioButton.setImage(UIImage(named:"check.png"), for: .normal)
            } else {
                self.radioButton.setImage(UIImage(named:"uncheck.png"), for: .normal)
            }
        }
    }
}

в вашем контроллере представления вам, конечно, придется устанавливать свойство isSelected при каждом нажатии строки.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    var animal = self.animals[indexPath.row]
    animal.isSelected = !animal.isSelected
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:TableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! TableViewCell

    cell.data = self.animals[indexPath.row]
}

и для вашего Animal может быть что-то вроде этого:

struct Animal {
    var description: String
    var isSelected: Bool
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...