2016-07-24 143 views
0

我有一个选项卡视图控制器,其中的一个选项卡是视图控制器。我需要能够在用户点击图像时使用swift在视图控制器中加载集合视图控制器。 这可以通过编程来完成吗?我在我的选项卡视图控制器中有3个选项卡,并且只需要为其中的一个执行此操作,而不是全部。 我到目前为止所做的: 添加了一个新的swift文件。 home.swift 将此添加到它:在swift中加载视图控制器中的集合视图控制器

class EventsController: UICollectionViewController 
{ 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") 
    } 
} 

然后,我改变了类视图控制器EventsController的,但它抛出以下异常: 异常“NSInternalInconsistencyException”,原因是: [UICollectionViewController的loadView]实例化视图控制器与 标识符从故事板主页主,但没有得到UICollectionView

回答

0

你可以做的是创建一个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 
    } 
} 
+0

对不起,我不能遵循这个。正如我所说,我已经添加了一个新的视图控制器作为我的标签栏控制器的新选项卡。我添加了一个新的快捷文件,home.swift,和里面我加入这个类:类EventsController:UICollectionViewController { 覆盖FUNC viewDidLoad中(){ super.viewDidLoad() 打印(“!!!!!!! !!!!!!!!!!!!!!!!!“) //collectionView?.registerClass(EventCell.self,forCellWithReuseIdentifier:cellId ) –

+0

哪个部分让你困惑? – 2016-07-24 06:56:30

+0

正如我所说,我已经添加了一个新的视图控制器作为我的标签栏控制器的新选项卡。我添加了一个新的快捷文件,home.swift,和里面我加入这个类:类EventsController:UICollectionViewController { 覆盖FUNC viewDidLoad中(){ super.viewDidLoad() 打印( “!!!!”) } }然后我设置这个类被该选项卡使用。结果是:异常'NSInternalInconsistencyException',原因:[UICollectionViewController loadView]实例化带标识符的视图控制器Home storyboard故事板Main,但没有得到UICollectionView –

相关问题