如何在UICollectionViewCell中设置UILabel
我有一个带有UIViewController的应用程序,其中包含UICollectionView IBOutlet。
UICollectionView中的单元格是MyCustomCell,并使用此方法设置其UILabel:
-(void)setCellLabel:(NSString *)value{ NSLog(@"settinglabel"); cellLabel.text = @"hardcode"; //added for testing purposes }
单元格具有属性类型类型,在故事板中将其标识为MyCustomCell,以及它的出列标识符。 UIViewController采用数据源和委托协议。 IBOutlet UILabel的cellBabelsockets连接到故事板。 方法定义为:
- (void)viewDidLoad{ [super viewDidLoad]; self.restNames = @[@"Orange",@"Naranja",@"Narnia"]; [self.collectionView registerClass:[MyCustomCell class] forCellWithReuseIdentifier:@"MyCustomCellID"]; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ NSLog(@"%d",[self.restNames count]); return [self.restNames count]; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ MyCustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; [cell setCellLabel:@"hi"]; NSLog(@"fitsname %@",[self.restNames objectAtIndex:indexPath.row]); return cell; }
我在tableview中绘制了三个单元格,对应于我的数组中的3个对象。 该数组只包含我直接由objectAtIndexPath设置的字符串对象,但我决定将它直接设置为@“hi”,因为它不起作用。 我甚至将setCellLabel方法中使用的值更改为硬编码值,并且每个单元格中只保留“Label”默认字符串。
为什么cellLabel没有正确设置?
您是否在界面构建器中设置了cellLabelsockets?
你应该在你的单元格的.h文件中有这样的东西:
@property (weak, nonatomic) IBOutlet UILabel *cellLabel;
然后你真的需要这样做:
cell.cellLabel.text = @"";
当您使用Storyboard时,默认模板是错误的,因为它使用了该行
[self.collectionView registerClass:[UICollectionView class] forCellWithReuseIdentifier:CellIdentifier];
但故事板已经注册了它。 所以基本上这就是你要创建一个基于故事板的自定义UICollectionView
:
- 创建您的
UICollectionViewController
子类 - 单击并将
UICollectionViewController
拖到故事板并根据需要更改配置 - 创建一个
UICollectionViewCell
子类 - 在故事板中设置单元格类,设置它的重用标识符ctrl-拖动所需的出口
- 删除
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier: CellIdentifier];
- 在
UICollectionView
子类中设置静态重用标识符
您可能忘记告诉您的UICollectionView
它应该用于创建单元格的类。 这是通过以下代码行完成的:
[self.collectionView registerClass:[MyCustomCell class] forCellWithReuseIdentifier: CellIdentifier];
您可以在控制器的viewDidLoad的末尾设置它。
- 用ios写一个带参数的方法
- 如何在iOS Swift 3中以编程方式推送和呈现给UIViewController而不使用segue
- 将Cordova console.log写入文件
- 本地通知停止工作,不知道为什么
- UIAccessibilityLayoutChangedNotification和UIAccessibilityScreenChangedNotification之间的实际区别?
- 我应该为Realm中的每个实体定义主键吗?
- 将button图像alignment到UIButton的右边缘
- 为什么SignalProducer不返回信号?
- “ – (id)init”在使用Storyboard时不会在ViewController中触发