【问题标题】: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

【问题讨论】:

    标签: ios swift


    【解决方案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
    • 我也在我的问题中添加了更多细节,希望它能澄清我需要做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    相关资源
    最近更新 更多