2015-07-23 6 views
7

У меня есть tableView с строками, которые должны быть горизонтально текущими collectionViews.UICollectionView внутри TableView не заполняет ячейки?

Моего Tableview клетки имеет один CollectionView внутри них, а потом я их экземпляров, как это:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell: MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("MyTableViewCell", forIndexPath: indexPath) as! MyTableViewCell 
    let nibName = UINib(nibName: "CollectionCell", bundle: nil) 
    cell.collectionView.registerNib(nibName, forCellWithReuseIdentifier: "CollectionCell") 
    cell.collectionView.dataSource = self 
    cell.collectionView.delegate = self 

    return cell 
} 

Я пытаюсь использовать авто высоту просмотр таблицы строки, и я думаю, что это то, что может вызывать проблемы. Как использовать UITableViewAutomaticDimension с внутренними представлениями коллекции?

+2

Возможно, вам придется вызвать 'reloadData' после того, как вы установили делегат и источник данных – Qazi

+0

@Qazi сделал это в cellForRowAtIndexPath, никакого эффекта. –

+0

жаль, что я не был ясен, поэтому вы вызываете 'reloadData' в виде коллекции, а не в TableView? – Qazi

ответ

7

Это в Objective-C, но работает для меня:

я. В регистре файлов .m в пользовательской ячейке введите UICollectionViewCell nib и укажите детали макета (размер, интервал и т. Д.).

ii. в ВК, который держит Tableview его .m сделать следующее cellForRowAtIndexPath

MyTableViewCell *cell = (MyTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"MyTableViewCellId" forIndexPath:indexPath]; 

    cell.collectionView.delegate = self; 
    cell.collectionView.dataSource = self; 
    cell.collectionView.tag = indexPath.row; 

    [cell.collectionView reloadData]; 

III. Вы можете использовать тег UICollectionView в методах делегата, чтобы заполнить нужную информацию.

Hop this помогает.

+0

Я пытаюсь использовать строку таблицы высоты для автоматического роста, и я думаю, что это то, что может вызвать проблемы. Как использовать UITableViewAutomaticDimension с внутренними представлениями коллекции? –

+1

Это действительно работает. Вы должны убедиться, что itemSize в макете установлен, а ограничения автоопределения ячейки, содержащей представление коллекции, указывают высоту, когда для параметра tableview установлено значение AutomaticDimension –

+0

@StefanKendall, вы абсолютно правы, извините, забыли включить это. просто добавил ответ – trdavidson

0

Попробуйте добавить - cell.setTranslatesAutoresizingMaskIntoConstraints (ложные) - смотрите ниже

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell: MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("MyTableViewCell", forIndexPath: indexPath) as! MyTableViewCell 
    let nibName = UINib(nibName: "CollectionCell", bundle: nil) 
    cell.collectionView.registerNib(nibName, forCellWithReuseIdentifier: "CollectionCell") 
    cell.collectionView.dataSource = self 
    cell.collectionView.delegate = self 
    cell.setTranslatesAutoresizingMaskIntoConstraints(false) 

    return cell 
} 

См https://www.captechconsulting.com/blogs/ios-8-tutorial-series-auto-sizing-table-cells для более определенной информации.

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