udaykumar40
udaykumar40

Reputation: 17

Collectionview in tableview cell

I have taken collection view in tableview cell now when I click the collection view cell it will go to the next view controller,is it possible? I have tried did select item method in that how to use perform segue method

Upvotes: 0

Views: 1181

Answers (1)

hament miglani
hament miglani

Reputation: 191

I am showing u example

     class ViewController: UIViewController, UITableViewDelegate,
     UITableViewDataSource {
         @IBOutlet weak var tableView: UITableView!  
    override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
        return false
    }
 }

This ViewController contain Tableview datasource n delegates. Its cell of type DemoTableViewCell showing below

    class DemoTableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate {
        var parentVC: UIViewController?

        @IBOutlet weak var collectionView: UICollectionView!
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
        return 10
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
        let demoCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "DemoCollectionViewCell", for: indexPath) as! DemoCollectionViewCell
        return demoCollectionViewCell
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){
        (self.parentVC as! ViewController).performSegue(withIdentifier: "YourSegueName", sender: self)


    }
    }

Again DemoTableViewCell contain datasouce and delegate of collection view as showing above Also didSelectItemAt contains performSegue, which is using parent refrence for Segue.

Now in collection view cell, there is 1 variable named parentVC, U have to set this value in cellForRowatIndexpath defined in ViewController class like that

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let demoTableViewCell = tableView.dequeueReusableCell(withIdentifier: "DemoTableViewCell", for: indexPath) as! DemoTableViewCell
        demoTableViewCell.parentVC = self
        demoTableViewCell.collectionView.reloadData()
        return demoTableViewCell
    }

and final make a segue from collectionViewCell on storyboard to YourController

Upvotes: 1

Related Questions