Класс регистрации ячеек UICollectionView в Swift


прямо сейчас я использую NSClassFromString, но есть ли лучший способ получить AnyClass! из класса в Swift? Я пытаюсь передать ссылку на представление моей коллекции-registerClass: forCellWithReuseIdentifier: метод.

collectionView.registerClass(NSClassFromString("MyCoolViewCell"), forCellWithReuseIdentifier: "MyCoolViewCell")
4 58

4 ответа:

в настоящее время это просто слепая, но образованная догадка, но с помощью Class.self может быть то, что вы хотите.

collectionView.registerClass(MyCoolViewCell.self, forCellWithReuseIdentifier: "MyCoolViewCell")

в случае, если вы используете файл nib, используйте этот код:

    let nib = UINib(nibName: "MyCoolViewCell", bundle: nil)
    collectionView?.register(nib, forCellWithReuseIdentifier: "MyCoolViewCellIdentifier")

В Swift 3:

self.collectionView.register(CustomCollectionViewCell.self, forCellWithReuseIdentifier: "CustomCollectionViewCellReuseIdentifier")

NSClassFromString("MyCoolViewCell")возможно, Вам и не пропустит.
Следует добавить имя модуля в префикс:
collectionView.registerClass(NSClassFromString("MyApp.MyCoolViewCell"), forCellWithReuseIdentifier: "MyCoolViewCell")

Если cellClass не переменная, используйте MyCoolViewCell.self - это лучший выбор.