Лучшая практика для многократного использования UICollectionView - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть основной UICollectionView с пользовательскими UICollectionViewCells.И я использую его в нескольких UIViewControllers.

У меня есть временная шкала, лайки, профиль, который использует тот же UICollectionView.

Какова наилучшая практика объявления UICollectionView в подобных ситуациях?

Я попытался создать класс с именем MainProductCollectionView, который наследуется от UIViewController.И в TimeLineViewController я использую его, как показано ниже.

let vc = MainProductCollectionView() //init
self.view.addSubview(vc.collectionView)

Но я не уверен, что это лучший способ использования.Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018
  1. Вы создаете представление, которое подклассирует представление коллекции, и настраиваете его методы по умолчанию (а также другие методы, которые вы хотите использовать).Я назову его CollectionViewExample.swift

инициализируйте его как требуется:

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    guard let view = loadViewFromNib() else { return }
    view.frame = self.bounds
    self.addSubview(view)
    contentView = view 
}

включите этот метод, чтобы загрузить его из пера во время инициализации:

func loadViewFromNib() -> UIView? {
    let bundle = Bundle(for: type(of: self))
    let nib = UINib(nibName: nibName, bundle: bundle)
    return nib.instantiate(withOwner: self, options: nil).first as? UIView
}

переопределите этот метод для дополнительных конфигураций, которые вы можете пожелать

override func layoutSubviews() {
    ....
}

Создайте .xib и сделайте его класс тем, который вы создали выше.Я назову его CollectionViewExample.xib

На вашей раскадровке в любом контроллере представления вы можете теперь добавить представление и сделать его собственный класс из CollectionViewExample.swift.

В любом файле viewcontroller.swift вы теперь можете сказать var/let collectionViewExample: CollectionViewExample! и использовать его в любом месте, где пожелаете.

0 голосов
/ 17 декабря 2018

Существует 2 решения:

  • Создание пользовательского collectionView, наследуемого от UICollectionView и содержащего все методы делегата, такие как celForItemAtIndexPath numberOfItemsInSection ...

Или

  • Создайте коллекцию CollectionViewCell в файле xib, а затем используйте yourCollectionView.register(cellType: CustomCell.self)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...