2016-07-24 3 views
0

У меня есть контроллер представления таблиц, и одна из вкладок в нем - контроллер вида. Мне нужно иметь возможность загружать контроллер представления коллекции в пределах этого контроллера представления, когда пользователь нажимает на изображение, используя быстрый. Можно ли это сделать программно? У меня есть 3 вкладки в моем контроллере представления таблиц и нужно делать это только для одного из них, не для всех. Что я сделал до сих пор: Добавлен новый быстрый файл. 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 { переопределение функ viewDidLoad() { super.viewDidLoad() печати ("!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ") //collectionView?.registerClass(EventCell.self, forCellWithReuseIdentifier: cellId) –

+0

Какая часть вас с вас запутала? –

+0

Как я уже сказал, я уже добавил новый контроллер View в качестве новой вкладки моего контроллера панели вкладок. Я добавил новый быстрый файл, home.swift, и внутри него я добавил этот класс: класс EventsController: UICollectionViewController { переопределения функа viewDidLoad() { super.viewDidLoad() печати ("!!!!") } } И затем я установил этот класс для использования этой вкладкой. Результат: исключение «NSInternalInconsistencyException», причина: [UICollectionViewController loadView] экземплярный контроллер представления с идентификатором. Главная из раскадровки. Главная, но не получила UICollectionView. –

Смежные вопросы