UICollectionViewCell中的标签未更新

时间:2016-04-21 01:50:49

标签: ios objective-c uicollectionview uilabel

在我的应用中,我正在显示日历,而我正在使用集合视图来显示一周中的日期标签。出于某种原因,当我运行应用程序时,所有标签仍然显示默认的“标签”。我看了一个类似的问题,但没有帮助。有什么建议?这是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;
}

仅供参考,我在故事板中有一个实际标签(在集合视图单元格中)。

3 个答案:

答案 0 :(得分:2)

因为你创建了一个新的UILabel点标签。所以你修改了label.text而不是cell label.text。

删除

label = [[UILabel alloc] init]

答案 1 :(得分:0)

  1. 创建一个UICollectionViewCell名称,例如带有属性

    的DayCell

    @property(弱,非原子)IBOutlet UILabel * lblName;

  2. 在故事板中,将单元格类从UICollectionViewCell更改为DayCell,同时将标识符设置为" daycell"现在将标签lblName绑定到故事板中的标签

  3. 并设置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;
    }
    
  4. 确保已正确设置集合视图的委托和数据源。

答案 2 :(得分:0)

这两行代码都返回UILabel

UILabel *label = (UILabel *)[cell viewWithTag:1];
label = [[UILabel alloc] init];

后者重新创建了一个标签,它不再属于UICollectionViewCell