Как заменить UICollectionViewDelegateFlowLayout реактивным (RxSwift) вызовом?

Есть ли способ заменить метод

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize

из UICollectionViewDelegateFlowLayout протокола чем-то реактивным с помощью RxSwift?


person Marcone    schedule 01.03.2017    source источник
comment
Я думаю, что сейчас это невозможно.   -  person DragonCherry    schedule 11.08.2017


Ответы (1)


Методы протокола, которые возвращают значения, основаны на вытягивании и, как таковые, несовместимы с философией Rx, основанной на выталкивании. Мало того, что в настоящее время невозможно заменить этот конкретный метод на Observable, это никогда не станет возможным.

Лучшее, что вы можете сделать, - это реализовать метод, вернув значение в Variable и использовать Rx для передачи данных в Variable. Когда представлению коллекции требуется размер рассматриваемого элемента, оно запросит его, вызвав этот метод.

person Daniel T.    schedule 30.12.2017