如何在 didSelectItemAt indexPath 函数下显示 ViewController? (没有故事板)

Posted

技术标签:

【中文标题】如何在 didSelectItemAt indexPath 函数下显示 ViewController? (没有故事板)【英文标题】:How to show ViewController under the didSelectItemAt indexPath function ? (without storyboard) 【发布时间】:2019-08-25 16:24:38 【问题描述】:

周末愉快。我有关于在 didSelectItemAt indexPath 函数下的问题我想去新的视图控制器,它是显示细节,每个单元格必须有不同的视图控制器(它会根据来自协议的数据而变化)。我尝试了很多方法来做到这一点,但我无法弄清楚。我调用了当前和推送视图控制器代码,但它也不起作用,因为 navigationController 代码不能在 didSelectItemAt 函数下工作。最后我试过了:

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


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


(来自 HomeController 的 showDetailPage 函数)。但是该代码也给出了错误,即

'UICollectionView 必须使用非零布局参数初始化'。

所以我无法解决它。我该如何解决它,请帮助我。祝你工作愉快!

【问题讨论】:

【参考方案1】:

这是因为HomeControllerUICollectionViewController 的子类,如果没有布局,collectionViewController 无法初始化!

所以改用这个初始化器:

let homecon = HomeController(collectionViewLayout: UICollectionViewLayout())

哦,这只是一周的开始。

【讨论】:

感谢您的回答,但当我尝试时,它给了我:警告:尝试呈现 .... 其视图不在窗口层次结构中!。 这是对您发布的错误问题的答案。那是另一个问题,还有另一个原因。如果您需要任何进一步的帮助,请随时提出其他问题。 你是对的。我必须研究那个错误。如果我想不通,让我说你!谢谢。

以上是关于如何在 didSelectItemAt indexPath 函数下显示 ViewController? (没有故事板)的主要内容,如果未能解决你的问题,请参考以下文章

如何在Swift中根据json id(意味着indexPath应该与json id匹配)从collectionView didSelectItemAt indexPath pushViewContro

didSelectItemAt 在 SCLAlertView 中不起作用

UIColctionView didSelectItemAt 问题

didSelectItemAt 未被调用

在 didSelectItemAt 中,单元格的代表为零

为啥我的 .pushViewController 不能快速从 didSelectItemAt 工作