Вставить представление коллекции в ячейку пользовательского представления таблицы

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

Я добавил коллекцию в пользовательскую ячейку на доске рассказов. Я связал коллекцию с Custom Cell.m (не уверен, что она туда должна). Я создал настраиваемую ячейку коллекции и связал изображение.

Именно отсюда я не уверен, следует ли размещать методы построения представления коллекции в пользовательской таблице Cell.m ИЛИ в View Controller.m? У меня есть изображение из Story Board, вы можете увидеть пользовательскую ячейку таблицы, а затем (не очень ясно) внизу находится представление коллекции (горизонтальная прокрутка), которое я хочу заполнить изображениями - просто не знаете как? Я также не уверен, какая информация может помочь, поэтому мне жаль, если отсутствует информация.

Изображение ячейки пользовательской таблицы

7 голосов | спросил Recycled Steel 20 Maypm13 2013, 14:49:25

2 ответа


0

Вы должны поставить Delagate и DataSource UICollectionView внутри пользовательского UITableViewCell класс.

Здесь находится -2" rel =" nofollow "> хороший учебник .

Речь идет о табличном представлении внутри ячейки табличного представления, но идея очень похожа.

Удачи!

ответил Nikola Kirev 15 J0000006Europe/Moscow 2013, 09:58:00
0

Вот решение для Swift. вам нужно настроить источник данных коллекционного представления и делегировать его в ячейку табличного представления, используя метод делегирования tableView cellForRowAtIndexPath, после этого используйте источник данных collectionview и метод делегата в viewController, где вы подтвердили источник данных tableveiew и делегировали. Вот код для mainViewController:

extension MainViewController:UITableViewDataSource, UITableViewDelegate {

// .....do some table view setup like numberOfRowsInSection ......

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("yourReusecellIdentifier", forIndexPath: indexPath) as! yourCustomCell

cell.setCollectionViewDataSourceDelegate(self, forRow: indexPath.row)

 return cell
}
}

Здесь код cell.setcollectionViewDataSourceDelegate (self, forRow: indexPath.rom) устанавливает делегат и источник данных в виде представления коллекции в ячейку табличного представления после перетаскивания вывода представления сбора в ячейку табличного представления. В ячейку tableView добавьте метод setcollectionViewDataSourceDelegate для установки делегата collectionView следующим образом:

class yourCustomCell: UITableViewCell {

//MARK:- Properties

@IBOutlet weak var collectionView: UICollectionView!    

//MARK:- initialization methods

override func awakeFromNib() {
    super.awakeFromNib()
    setupView()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

}

//MARK:- Setup collectionView datasource and delegate

func setCollectionViewDataSourceDelegate
    <D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>
    (dataSourceDelegate: D, forRow row: Int) {

    collectionView.delegate = dataSourceDelegate
    collectionView.dataSource = dataSourceDelegate
    collectionView.tag = row
    collectionView.reloadData()
}
}

После этого используйте делегированный метод представления коллекции в вашем контроллере представления:

extension MainViewController: UICollectionViewDelegate, UICollectionViewDataSource {

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {

       return  2

}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        return 5
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("collectionViewReuseIdentifier", forIndexPath: indexPath) as! YourCollectionViewCustomCell

         .......cell configure....

        return cell

}
}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

 print("get selected collectionview itemindex \(indexPath.row)")

}
}

Чтобы получить четкое объяснение, посетите этот https: //ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/

ответил bikram sapkota 5 PM00000080000003531 2016, 20:39:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132