UICollectionView уничтожен в UITableViewCell - PullRequest
0 голосов
/ 19 сентября 2018

как почистить UITableViewCell перед повторным использованием?В табличном представлении cellForRow я установил viewModel и в didSet эту модель представления я изменяю ограничение высоты collectionView, но когда я выполняю прокрутку очень быстро, коллекция полностью уничтожается.

func setup(collectionView: UICollectionView) {
    if self.collectionView != collectionView || self.collectionView == nil {
        collectionView.register(UINib(nibName: "HomeRecommendationCollectionViewCell", bundle: nil),
                                forCellWithReuseIdentifier: HomeStoryboardConsts.Identifier.homeRecommendationCollectionViewCell.rawValue)
        collectionView.contentInset = UIEdgeInsetsMake(0, 10, 0, 10)
        if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
            layout.minimumInteritemSpacing = 10
        }

        disposeBag = DisposeBag()
        items.asObservable()
            .subscribe(onNext: { [weak collectionView] _ in
                collectionView?.reloadData()
            })
            .addDisposableTo(disposeBag)

        self.collectionView = collectionView
    }
}

коллекция View setup

viewModelНастройка:

   var viewModel: TitleAccessoryButtonCollectionViewModel? {
        didSet {
            guard let viewModel = viewModel else {
                return
            }
            titleLabel.text = viewModel.title
            if let buttonTitle = viewModel.accessoryButtonModel?.title {
                setAccessoryButtonTitle(buttonTitle)
            }else{
                accessoryButton.hideTitleLabel()
            }

            if let buttonImage = viewModel.accessoryButtonModel?.image {
                accessoryButton.buttonImageView.image = buttonImage
            }
            else {
                accessoryButton.hideImageView()
            }

            sectionContentImage.image = viewModel.sectionContentImage
            titleLabelLeadingConstraint.constant = viewModel.titleLabelLeadingSpacing
            accessoryButton.isHidden = viewModel.hideAccessoryButton
            sectionContentView.isHidden = viewModel.hidePremiumContentView
            let collectionViewModel = viewModel.collectionViewModel
            collectionViewHeight.constant = CGFloat(collectionViewModel.height)
            collectionViewModel.setup(collectionView: collectionView)
            collectionView.delegate = collectionViewModel.delegate
            collectionView.dataSource = collectionViewModel.dataSource
            collectionView.reloadData()
        }
    } 

У меня есть также в консоли. 2018-09-19 14: 27: 52.335285 + 0200 App [76102: 8433084] Поведение UICollectionViewFlowLayout не определено, потому что: 2018-09-19 14: 27: 52.335409 + 0200 App [76102: 8433084] высота элемента должна быть меньше высоты UICollectionView минус верхние и нижние значения вставок раздела, минус верхние и нижние значения вставок содержимого.

1 Ответ

0 голосов
/ 19 сентября 2018

Если у вас есть пользовательский класс tableviewcell для ячеек tableview.Тогда есть метод с именем prepareForReuse().Используйте этот метод для очистки ячейки и подготовки ее к новому макету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...