Я пробовал это часами без везения. У меня есть UICollectionView collectionView. Представление коллекции - это в основном список с последней ячейкой, всегда являющейся ячейкой с большим значком плюс для добавления другого элемента. Я разрешил переупорядочивать следующее. Я бы хотел, чтобы это было, когда я начинаю интерактивное движение, клетка с плюсом уходит, а затем, когда пользователь закончил редактирование, он появляется снова. Это базовая версия кода у меня есть:Временно сокрытие ячейки в UICollectionView Swift iOS
func handleLongGesture(gesture: UILongPressGestureRecognizer) {
switch(gesture.state) {
case UIGestureRecognizerState.Began:
...
self.collectionView.beginInteractiveMovementForItemAtIndexPath(selectedIndexPath)
removeAddCell()
case UIGestureRecognizerState.Changed:
case UIGestureRecognizerState.Ended:
...
collectionView.endInteractiveMovement()
replaceAddCell()
default:
collectionView.cancelInteractiveMovement()
}
}
func removeAddCell(){
print("Reloading data - removing add cell")
data_source.popLast()
self.collectionView.reloadData()
}
func replaceAddCell(){
print("Reloading data - replacing add cell")
data_source.append("ADD BUTTON")
self.collectionView.reloadData()
}
Это очень грубый псевдокод, но я не могу даже получить самую простую версию этой работы. С кодом, который у меня есть, он дает мне страшную «Неустранимая ошибка: неожиданно найденный nil при распаковке необязательных значений» в строке, где я ссылаюсь на UICollectionViewCell после удаления элементов из источника данных.
Если кто-то, кто сделал что-то подобное, может поделиться своим подходом, я бы очень признателен! Спасибо!
-Bryce
Вместо того, чтобы удалить его, почему бы не просто скрыть его с помощью непрозрачности (альфа) и отключить взаимодействие с пользователем? Это может быть лучшим пользовательским интерфейсом, чтобы знак плюса был тусклым, а не исчезал вообще. Если вы начнете перетаскивать что-то, а другое исчезнет, может показаться, что что-то пошло не так. – Michael
Можно использовать показать нам, какая строка имеет фатальную ошибку? –
Я попытался спрятать его, используя alpha 0, но ячейка все еще существует, поэтому, если пользователь перемещает ячейку сверху вниз, есть пробел во второй-последней позиции, где находится ячейка Add. @Майкл – brycejl