Ячейки CollectionView не загружаются в View Controller - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь загрузить некоторые данные в фид, основанный на данных пользователя, через Firebase, однако это не работает. Мое приложение в настоящее время организовано так, что пользователь входит в CustomTabBarController и проверяется для входа в систему и что профиль был создан, извлекая его при необходимости. Затем я отправляю пользователя на фид по:

// Go to home feed
        let navController = self.viewControllers![0] as? UINavigationController
        let feedVC = navController?.topViewController as? FeedViewController
        if feedVC != nil {
            feedVC!.getProfilePhotos()
        }

Мой первый вопрос - это правильный способ загрузки в FeedViewController на CustomTabBarController? Я также звоню, чтобы заблаговременно получить данные профиля.

getProfilePhotos - это набор делегатов и протоколов, который возвращает следующий путь (я убедился, что он правильно извлекает photoURL). Затем отладчик считает, что после этого больше нет методов для запуска.

func feedProfilePhotosRetrieved(photoURLs: [String]) {

    // Set photos array and reload the tableview
    self.photoURLs = photoURLs
    cardCollectionView.reloadData()
}

Вот мой класс FeedViewController, его свойства и viewDidLoad () / viewDidAppear ()

var feedModel = FeedViewModel()
var associates = UserProfile.shared().associates
var photoURLs = [String]()

@IBOutlet weak var cardCollectionView: UICollectionView!


override func viewDidLoad() {
    super.viewDidLoad()
    associates = UserProfile.shared().associates
    feedModel.delegate = self
    cardCollectionView.delegate = self
    cardCollectionView.dataSource = self
    cardCollectionView.register(CardCollectionViewCell.self, forCellWithReuseIdentifier: "sectionCell")
    cardCollectionView.reloadData()
}

override func viewWillAppear(_ animated: Bool) {
    getProfilePhotos()
}

Здесь я создаю ячейки в виде коллекции. Я ставлю точку останова при объявлении «cell», но она не срабатывает.

extension FeedViewController: UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return associates.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "sectionCell", for: indexPath) as! CardCollectionViewCell
    let card = UserProfile.shared().associates[indexPath.row]
    cell.name.text = card.name
    cell.poscomp.text = card.title + ", " + card.company

    // Photo that we're trying to display
    let p = photoURLs[indexPath.row]

    // Display photo
    cell.downloadPhoto(p)
    cell.layer.transform = animateCell(cellFrame: cell.frame)
    return cell
} }

Есть ли какие-то явно видимые ошибки, которые я пропускаю? Должен ли я вызывать вышеуказанную функцию при reloadingData ()? Спасибо за вашу помощь и дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 12 июня 2019

Метод numberOfItemsInSection должен возвращать photoURLs.count.

extension FeedViewController: UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return photoURLs.count
}
...