Не удается подключить представление коллекции к просмотру кода контроллера. ‘Ошибка непризнанного селектора, отправленного в экземпляр’

#swift #xcode #viewcontroller

#swift #xcode #viewcontroller

Вопрос:

Я пытаюсь добавить представление коллекции к моему пользовательскому контроллеру просмотра под названием «cardsViewController». Когда я запускаю сборку, я получаю ошибку [UIViewController CollectionView:numberOfItemsInSection:]: нераспознанный селектор, отправленный в экземпляр

Я подключил источник данных представления коллекции и делегировал его контроллеру представления в раскадровке и добавил «UICollectionViewDataSource, UICollectionViewDelegate» после имени класса в коде. Я также подключил контроллер представления в раскадровке к коду, добавив «CardsViewController» (то же имя, что и файл кода) в поле пользовательского класса контроллера представления.

 import UIKit

class CardsViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 4
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        var cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)

        return cell
    }

}
  

Я хочу, чтобы xcode распознал, что файл кода контроллера представления отвечает за управление представлением коллекции.

инспектор идентификации контроллера просмотра карточек

инспектор подключений представления коллекции

Ответ №1:

Обычно это происходит, когда вы устанавливаете неправильный контроллер представления в interface builder. Убедитесь, что Custom Class в Identity Inspector точно совпадает с именем класса вашего контроллера просмотра ( CardsViewController ).

Комментарии:

1. Привет, спасибо за ваш ответ. Убедитесь, что пользовательский класс в инспекторе идентификации what должен соответствовать имени класса view controller?

2. Это потому, что необходимо проверить «Наследовать модуль от цели». Имя моего класса было правильным.