简体   繁体   中英

How to show ViewController under the didSelectItemAt indexPath function ? (without storyboard)

Have a nice weekend. I have problem about that under the didSelectItemAt indexPath function I want to go new view controller which is show details and each cell must have different view controller (it will change according to data which are came from protocol). I tried lots of way to do that but I can't figured out. I call present and push view controller codes but its also not working because navigationController code can't work under didSelectItemAt function. Lastly I tried that:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let homecon = HomeController()
    homecon.showDetailPage() }


func showDetailPage() {
    let newView = pageDetail()
    self.present(newView, animated: true, completion: nil)

}

(showDetailPage function from HomeController). But that code also gave error which is

'UICollectionView must be initialized with a non-nil layout parameter'.

So I can't solve it. How can I solve it please help me. Have a nice work!

This is because HomeController is a subclass of UICollectionViewController and a collectionViewController can not be initialized without it's layout!

So use this initializer instead:

let homecon = HomeController(collectionViewLayout: UICollectionViewLayout())

Oh and it's just the start of the week here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM