stephw
stephw

Reputation: 563

how to reload a collectionview that is inside a tableviewcell

I have a collectionView inside a tableViewCell

for example: example credit: How to use StoryBoard quick build a collectionView inside UITableViewCell

I would like to reload the collectionView when I update information.

I have put a print in the collectionView's cellForItemAtIndexPath to test if it is being called but it isn't. How can I get the collectionView to reload?

Upvotes: 6

Views: 9923

Answers (4)

Zafar Ahmad
Zafar Ahmad

Reputation: 3219

Simplest Way

for cell in tableView.visibleCells {
    (cell as? YourTableViewCell)?.collectionView.reloadData()
}

Or If you need to reload Specific UICollectionView

if let cell = tableView.cellForRow(at: IndexPath(row: 0, section: 0)) as? YourTableViewCell {
   cell.collectionView.reloadData()
}

Upvotes: 6

Nuno Ferro
Nuno Ferro

Reputation: 1279

1st on tableview cell create this function:

func collectionReloadData(){
        DispatchQueue.main.async(execute: {
            self.collectionView.reloadData()
        })
    }

then call it from

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { ...

    cell.collectionReloadData()

Upvotes: 1

good4pc
good4pc

Reputation: 711

create tags for collection view with indexPath.row of UITableView and create an instance of the UICollectionView using the tag and reload !

Upvotes: 0

stephw
stephw

Reputation: 563

I found out how! In my tableViewCell class I just need to link the collectionView as an outlet so in my tableViewCell's cellForRowAtIndexPath I just needed to call cell.collectionView.reloadData()

Upvotes: 10

Related Questions