【问题标题】:CollectionView navigationController?.pushViewController() does nothing with no errorCollectionView navigationController?.pushViewController() 什么都不做,没有错误
【发布时间】:2019-02-16 14:51:23
【问题描述】:

我创建了一个 CollectionView,我想打开一个 ViewController,其中包含具体的详细信息,具体取决于单击的行。(我没有使用情节提要,这都是以编程方式完成的)。

我查看了文档并尝试使用覆盖函数didSelectItemAtnavigationController?.pushViewController(),但似乎没有任何反应。没有错误什么的?查看我的代码:

(CollectionViewController)

(视图控制器)

我也尝试将布局提供给视图控制器,但没有成功。它显然接受了每一行的点击功能,因为它可以很好地打印到日志中:

对我在这里错过的任何帮助将不胜感激。

【问题讨论】:

  • 您可以尝试打印导航控制器堆栈,检查navigationcontroller 是否为nil。?
  • 啊,是的,导航控制器打印为 nil?

标签: ios swift4 xcode10


【解决方案1】:

首先,确保在你的TabBarController中,控制器被初始化为navigationController

func viewDidLoad() {
    let vc1 = UINavigationController(rootViewController: YourController())
    viewControllers = [vc1, vc2]
}

在你把它放入viewControllers数组之前,这样你就可以在vc1中调用navigationController?.pushViewController()

另一件事:确保在推送之前初始化CollectionViewController 时提供流布局,如下所示:

let layout = UICollectionViewFlowLayout()
let detailVC = PlaceDetailController(collectionViewLayout: layout)
detailVC.place = ... // Pass value here
navigationController?.pushViewController(detailVC, animated: true)

【讨论】:

    猜你喜欢
    • 2011-11-19
    • 2010-12-19
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多