Swift - «должен зарегистрировать перо или класс для идентификатора или подключить ячейку прототипа в раскадровке» - PullRequest
0 голосов
/ 21 октября 2019

Я получаю это сообщение об ошибке. Я уже пытался добавить это в своем коде:

self.collectionView.register(UICollectionCell.self, forCellReuseIdentifier: "Cell")

Но это просто вызывает еще одну ошибку:

Неоднозначная ссылка на collectionView элемента(_: numberOfItemsInSection:) '

Вот мой код:

class HomeViewController: UIViewController,     UICollectionViewDataSource, UICollectionViewDelegate {

@IBOutlet weak var UICollectionView: UICollectionView!

let items = ["0", "1", "2", "3", "4"]

override func viewDidLoad() {
    self.UICollectionView.register(CollectionViewCell.self, forCellWithReuseIdentifier: "Cell")

    super.viewDidLoad()
}


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

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

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionViewCell

    cell.mainListLabel.text = items[indexPath.item]

    return cell
}

}

1 Ответ

1 голос
/ 21 октября 2019

Изменить

self.collectionView.register(UICollectionCell.self, forCellReuseIdentifier: "Cell")

на

self.collectionView.register(UICollectionViewCell.self, forCellReuseIdentifier: "Cell")

И

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! UICollectionViewCell

Что означает CollectionViewCell? Это производный класс или что-то в этом роде?

Поскольку вы регистрируетесь UICollectionCell, но звоните CollectionViewCell?

Надеюсь, это сработает.

// edit

Окончательное решение:

class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var mainListButton: UIButton!
@IBOutlet weak var mainListLabel: UILabel!

override init(frame: CGRect) {
super.init(frame: frame)

self.backgroundColor = UIColor.black
}


required init?(coder: NSCoder) {
super.init(coder: coder)

self.backgroundColor = UIColor.black
}

}

Установите собственный класс представления коллекции или используйте XIB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...