快速在视图控制器中加载集合视图控制器
Posted
技术标签:
【中文标题】快速在视图控制器中加载集合视图控制器【英文标题】:Load a collection view controller inside a view controller in swift 【发布时间】:2016-07-24 05:01:42 【问题描述】:我有一个选项卡视图控制器,其中一个选项卡是视图控制器。当用户使用 swift 点击图像时,我需要能够在该视图控制器中加载集合视图控制器。 这可以通过编程方式完成吗?我的选项卡视图控制器中有 3 个选项卡,只需要为其中一个而不是全部执行此操作。 到目前为止我做了什么: 添加了一个新的 swift 文件。主页.swift 添加到它:
class EventsController: UICollectionViewController
override func viewDidLoad()
super.viewDidLoad()
print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
然后我将视图控制器的类更改为EventsController,但是它抛出了以下异常: 异常“NSInternalInconsistencyException”,原因: [UICollectionViewController loadView] 实例化视图控制器 来自故事板 Main 的标识符 Home,但没有获得 UICollectionView
【问题讨论】:
【参考方案1】:你可以做的是创建一个 UICollectionViewController 类,它是 UIViewController 的子类。您可以通过这样做非常轻松地做到这一点:
class CustomTabBarController: UITabBarController
override func viewDidLoad()
super.viewDidLoad()
let homeImage = UIImage(named: "home")
let mainController = MainCollectionViewController(collectionViewLayout: UICollectionViewFlowLayout())
let navigationController = UINavigationController(rootViewController: mainController)
viewControllers = [navigationController]
请注意,您必须指定 UICollectionViewController 的布局。
现在你的 UICollectionViewController 类:
class MainCollectionViewController: UICollectionViewController
override func viewDidLoad()
super.viewDidLoad()
// code goes here
【讨论】:
对不起,我不能关注这个。正如我所说,我已经添加了一个新的视图控制器作为我的标签栏控制器的新标签。我添加了一个新的 swift 文件 home.swift,并在其中添加了这个类:class EventsController: UICollectionViewController override func viewDidLoad() super.viewDidLoad() print("!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!") //collectionView?.registerClass(EventCell.self, forCellWithReuseIdentifier: cellId) 哪一部分让你感到困惑? 正如我所说,我已经添加了一个新的视图控制器作为我的标签栏控制器的新标签。我添加了一个新的 swift 文件 home.swift,并在其中添加了这个类: class EventsController: UICollectionViewController override func viewDidLoad() super.viewDidLoad() print("!!!!") 然后我设置该选项卡将使用此类。结果是:异常 'NSInternalInconsistencyException',原因:[UICollectionViewController loadView] 使用故事板 Main 中的标识符 Home 实例化了视图控制器,但没有得到 UICollectionView 我也在我的问题中添加了更多细节,希望它能澄清我需要做什么。以上是关于快速在视图控制器中加载集合视图控制器的主要内容,如果未能解决你的问题,请参考以下文章