在我的应用中,我正在显示日历,而我正在使用集合视图来显示一周中的日期标签。出于某种原因,当我运行应用程序时,所有标签仍然显示默认的“标签”。我看了一个类似的问题,但没有帮助。有什么建议?这是UICollectionViewCell的代码:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CalendarTitleCellIdentifier forIndexPath:indexPath];
UILabel *label = (UILabel *)[cell viewWithTag:1];
label = [[UILabel alloc] init];
CGSize size = [self collectionView:collectionView layout:collectionView.collectionViewLayout sizeForItemAtIndexPath:indexPath];
label.frame = CGRectMake(0, 0, size.width, size.height);
NSString *title = [[NSString alloc] initWithFormat:@"%@",self.weektitles[indexPath.row]];
label.text = title;
NSLog(@"%@", label.text);
return cell;
}
仅供参考,我在故事板中有一个实际标签(在集合视图单元格中)。
答案 0 :(得分:2)
因为你创建了一个新的UILabel点标签。所以你修改了label.text而不是cell label.text。
删除
label = [[UILabel alloc] init]
答案 1 :(得分:0)
创建一个UICollectionViewCell名称,例如带有属性
的DayCell@property(弱,非原子)IBOutlet UILabel * lblName;
在故事板中,将单元格类从UICollectionViewCell更改为DayCell,同时将标识符设置为" daycell"现在将标签lblName绑定到故事板中的标签
并设置cellForItemAtIndexPath方法
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"daycell";
DayCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
[cell.lblName setText:@"XYZ"];
return cell;
}
确保已正确设置集合视图的委托和数据源。
答案 2 :(得分:0)
这两行代码都返回UILabel
:
UILabel *label = (UILabel *)[cell viewWithTag:1];
label = [[UILabel alloc] init];
后者重新创建了一个标签,它不再属于UICollectionViewCell