Я потратил некоторое время на поиск других подобных сообщений, но не смог найти точную проблему. Я новичок в iOS и объективно, так что это, вероятно, очень просто.
Я создаю подкласс UICollectionViewCell:
@interface FooCollectionViewCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *cellLabel;
@end
И в моем собственном подклассе UIViewController я пытаюсь установить значение для cellLabel
:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
FooCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
// Configure the cell
UILabel *label = [[UILabel alloc] init];
label.text = @"whatever";
cell.cellLabel = label;
return cell;
}
Мое приложение вылетает при запуске:
[UICollectionViewCell setCellLabel:]: нераспознанный селектор отправлен экземпляру 0x7fef224144f0
Если я понимаю эту ошибку, похоже, что она жалуется, что я пытаюсь установить свойство cellLabel для экземпляра суперкласса UICollectionViewCell вместо экземпляра подкласса FooCollectionViewCell.
Однако, когда я добавляю точку останова в эту строку и смотрю на свои переменные, я вижу:
ячейка FooCollectionViewCell * 0x7fcb5340dcd0 0x00007fcb5340dcd0
Из моего кода также кажется очевидным, что объект должен иметь тип FooCollectionViewCell, потому что это тип cell
, который создается как экземпляр.
Мой процесс настройки моей раскадровки был следующим:
- Перетащите CollectionViewController в мою раскадровку
- Установите для его пользовательского класса значение FooCollectionViewController. Кажется, это работает, потому что мой код вызывается.
- Щелкните ячейку-прототип, автоматически созданную в автоматически созданном представлении коллекции, установите для ее пользовательского класса значение FooCollectionViewCell. Установите идентификатор на «FooCell» и обновите переменную reuseIdentifier в моем ViewController, чтобы она также была «FooCell».
Есть что-то, что мне не хватает?
cell
не имеет никакого значения. Что вы установили в своем xib/SB? Пожалуйста, добавьте проверку класса ячейки в свой код, чтобы увидеть, создает ли другой класс экземпляр объекта ячейки. - person Amin Negm-Awad   schedule 08.04.2015