Представление коллекции установило изображение кнопки-переключателя в первом указателе и при выбранном изменении - PullRequest
0 голосов
/ 18 января 2020

У меня есть представление коллекции с 3 или 4 элементами данных. Каждая ячейка имеет одно радиоизображение. Когда приложение загружается в первый раз, мне нужно сначала установить индексное изображение кнопки-переключателя на выбранный br, и, если оно коснется какой-либо ячейки, это изображение ячейки следует превратить в выбранное радиоизображение. И предыдущее должно измениться на невыбранное радиоизображение.

Я обработал это в своей ячейке для метода строк:

let isFirstData = (nameData.name == self.nameObjects[0].name) ? true : false
cell.set(dataSource: ["isSelected": isFirstData] as [String: AnyObject])

Здесь nameData - это мои единственные данные, которые я передаю в свою ячейку для метода строк. И я устанавливаю источник данных, который будет обрабатывать мой источник данных в моей ячейке.

Так что теперь я выбрал, как я могу изменить его.?

И я не удовлетворен своей ячейкой для кода метода строки, чтобы справиться с этим.

Любая помощь будет отличной.

Спасибо, Рохит

Ответы [ 2 ]

1 голос
/ 18 января 2020

Вам нужно переопределить в классе UICollectionViewCell этот этот метод.

 override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: true)
   if selected{
     set selected image
   } else {
    set unselected image
  }
    }

После этого вам нужно вызвать метод Highlighted в классе V C и установить выбранное изображение их.

0 голосов
/ 18 января 2020

Вот вам направление, дайте мне знать, если вы не можете его реализовать:

У вас есть метод в файле ячейки, а затем переопределите isSelected свойство UICollectionViewCell, тогда, если isSelected = true, вызовите ваш метод со значением параметра true, чтобы выбрать изображение переключателя, и если это false, вызовите ваш метод со значением параметра false, чтобы де выбрать изображение переключателя и соответственно обновить пользовательский интерфейс.

Затем В методе cellForRowAt или в методе willDisplayCellAt из UICollectionView позже выберите первый элемент при первом запуске с методом selectItem(at:animated:scrollPosition:). Когда представление коллекции сначала инициализируется, оно покажет первый элемент как выбранный, а затем, когда вы выберете другую ячейку, обновит пользовательский интерфейс для всех ячеек соответственно, так как вы переопределили свойство isSelected и вызовите там методы.

Как выбрать первый элемент при отображении ячеек (могут быть и другие способы сделать это):

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    if indexPath.row == 0 {
        collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .left)
    }
}

Обратите внимание, что этот элемент будет выбран первым для всех разделов, это может вызвать проблемы если в вашем UICollectionView

имеется более 1 раздела или если вы уверены, что ваш collectionView всегда будет иметь данные, доступные при загрузке представления, вы можете сделать следующее в viewDidLoad:

let indexPath = IndexPath(row: 0, section: 0)
collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .left)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...