Изменение источника данных представления коллекции на кране

У меня есть представление коллекции с постепенно увеличивающимся количеством предметов. Первоначально может отображаться 100 элементов. Затем, основываясь на выборе одного, я хочу вставить элементы после последнего видимого в данный момент элемента. Я также хочу обновить то, что уже было добавлено, но я еще не видел.

performBatchUpdates делает то, что мне нужно, но если вы быстро выберете / отмените выбор нескольких элементов, вы получите постепенное снижение производительности.

Это то, что я имею до сих пор на каждом кране сотовой связи:

performBatchUpdates({ () -> Void in
    collectionView.reloadItemsAtIndexPaths(reloadIndexPaths)
    collectionView.insertItemsAtIndexPaths(insertIndexPaths)
}, completion: { (completed: Bool) -> Void in

Любые мысли о том, что я мог бы сделать, чтобы сгладить производительность? Инструменты подтверждают мое предположение, что это является предметом озабоченности.

1 ответ

Попробуй сделать это async как это:

 dispatch_async(dispatch_get_main_queue()) { () in
         performBatchUpdates({ () -> Void in
           collectionView.reloadItemsAtIndexPaths(reloadIndexPaths)
           collectionView.insertItemsAtIndexPaths(insertIndexPaths)
          }, completion: { (completed: Bool) -> Void in
          ...
      }
Другие вопросы по тегам