Встраивание свойств Inline не работает для общих подклассов UICollectionViewCell
Если я определяю подкласс UICollectionViewCell:
class TestCell<T>: UICollectionViewCell {
var float: CGFloat? = 3
var string = "abc"
}
Зарегистрировать его:
collectionView.registerClass(TestCell<String>.self, forCellWithReuseIdentifier: "Test")
Затем используйте его:
collectionView.dequeueReusableCellWithReuseIdentifier("Test", forIndexPath: indexPath) as! TestCell<String>
Я замечаю странное поведение со свойствами, которые должны были быть инициализированы.
- float == Необязательный (0.0)
- string == ""
Почему это происходит и как я могу это исправить?
Это на Xcode 7.3
Ответы
Ответ 1
Похоже, что это была ошибка, связанная с дженериками.
Если вы избавитесь от спецификатора generic, переменные инициализируются, как вы ожидаете.
Если вам нужен спецификатор generic, вы можете обойти проблему, создав свойства в методе init, а не inline:
class TestCell<T>: UICollectionViewCell {
override init(frame: CGRect) {
float = 3
string = "abc"
super.init(frame: frame)
}
var float: CGFloat?
var string: String
}