2015-08-28 2 views
0

Я пытаюсь отменить выбор ячеек, которые были предварительно выбраны, но в настоящее время не отображаются в виде коллекции. Я использую этот код:Отмена выбора ячеек, которые в настоящее время не видны

 let optionalSelectedItems = collectionView.indexPathsForSelectedItems() 
     if let selectedItems = optionalSelectedItems{ 
     for indexPath in selectedItems{ 

     self.collectionView.deselectItemAtIndexPath(indexPath, animated: true) 
     self.collectionView.delegate?.collectionView!(self.collectionView, didDeselectItemAtIndexPath: indexPath) 
     } 

Существует несколько довольно важный материал происходит в моей реализации func collectionView(_:didDeselectItemAtIndexPath:). Выделение вызывает событие в каком-либо другом виде. Это вызывает ошибку, потому что я отменяю выделение ячеек, которые в настоящее время находятся вне экрана и, следовательно, даже не в памяти. Как помещать ячейки в память в течение короткого периода времени? Мне нужно только отменить их, поэтому я думаю, что 0,1 с будет более чем достаточно.

+0

Я имел подобную проблему с 'UITableView'; решение заключалось в вызове 'super.tableView: deselectRowAtIndexPath:'. –

+0

В моей реализации collectionView (_: didDeselectItemAtIndexPath :) происходит некоторое довольно важное событие, и его нужно называть – brumbrum

ответ

1

Вы можете хранить индексы выбранных строк в отдельном массиве и выбрать/отменить выбор ячейки после создания в

func collectionView(_ collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 
+0

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

+0

, то как вы можете прикоснуться к кнопке на ячейке, «которая в настоящее время не видна»? – Igor

+0

Кнопка НЕ ​​ячейка. Это обычный экземпляр UIButton где-то вне представления коллекции. – brumbrum

Смежные вопросы