2015-03-22 1 views
3

У меня есть UITableView с пользовательской ячейкой, каждая из которых содержит горизонтальное прокручивание UICollectionView. Когда ячейки просмотра таблицы возвращаются, горизонтальное положение прокрутки в виде коллекции перерабатывается вместе с ним. Должен ли я вручную обновлять позицию прокрутки коллекции при создании новых ячеек? И если есть способ сохранить положение прокрутки на основе каждой ячейки?iOS Swift: Как подготовить ячейку для повторного использования

пользовательских UITableViewCell

class CustomCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource { 

    var collectionView:UICollectionView! 
    var layout = UICollectionViewFlowLayout() 
    var collectionData = [UIImage]() 
    let kCellIdentifier = "Cell" 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 

     layout.minimumLineSpacing = 10.0 
     layout.minimumInteritemSpacing = 1.0 
     layout.scrollDirection = UICollectionViewScrollDirection.Horizontal 

     collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: layout) 
     collectionView.registerClass(ItemCell.self, forCellWithReuseIdentifier: kCellIdentifier) 
     collectionView.delegate = self 
     collectionView.dataSource = self 
     addSubview(collectionView) 
    } 

    override func layoutSubviews() { 
     super.layoutSubviews() 
     layout.itemSize = CGSize(width: 800, height: bounds.height) 
     collectionView.frame = bounds 
    } 
} 

extension ProjectCell: UICollectionViewDataSource { 
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 5 
    } 

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(kCellIdentifier, forIndexPath: indexPath) as! ItemCell 
     //Reset collectionView scroll position? 
     return cell 
    } 
} 

ответ

3

Лучшее место, чтобы поместить код, чтобы сбросить позицию прокрутки в UICollectionViewCell будет в методе prepareForReuse. Переопределите его в своем подклассе ячейки, и он будет вызываться каждый раз, когда ранее существующая ячейка была удалена dequeueReusableCellWithReuseIdentifier.

+0

Есть ли способ запомнить положение прокрутки для каждой ячейки? Поэтому, когда я перейду обратно в ячейку, с которой я ранее взаимодействовал, она будет находиться в той же позиции прокрутки? – colindunn

+1

Вам необходимо сохранить позицию прокрутки на контроллере табличного представления и применить его, когда вы предоставляете представление таблицы в ячейке. – Rengers

+0

Могу ли я сохранить это значение в ячейке или мне нужно сохранить его в контроллере представления? – colindunn

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