XCode 6 UICollectionview viewwithtag无法正常工作

时间:2014-09-21 18:49:19

标签: ios uicollectionview xcode6 uicollectionviewcell viewwithtag

似乎XCode 6使用viewwithtags与XCode 5不同。

我在XCode 6中使用以下代码与Storyboard。 创建了50个单元格,但标签不可见。所有内容都设置正确,如标签等。 如果我使用“旧的”XCode 5方式使用Register cell分类,它似乎适用于iOS 7,但在iOS 8中,数据在我开始滚动之前不会传递给标签。

static NSString * const reuseIdentifier = @"MyCell";

- (void)viewDidLoad {
    [super viewDidLoad];

    // Register cell classes
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];

}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 50;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:102];    
    nameLabel.text = @"Hello World";
    nameLabel.textColor = [UIColor whiteColor];

    cell.backgroundColor = [UIColor blueColor];

    return cell;
}

更新后的答案,但在iOS 8下,第一个单元格不会显示内容。只有在向上和向下滚动后,内容才会加载到标签。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"Cell";

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:102];    
    nameLabel.text = @"Hello World";
    nameLabel.textColor = [UIColor whiteColor];

    cell.backgroundColor = [UIColor blueColor];

    return cell;
}

屏幕截图:

https://www.dropbox.com/s/xs6gbvz3d04e4hv/Bildschirmfoto%202014-09-21%20um%2023.08.18.png?dl=0 https://www.dropbox.com/s/tp67rznggi5pcwt/Bildschirmfoto%202014-09-21%20um%2023.10.06.png?dl=0

2 个答案:

答案 0 :(得分:4)

我找到了解决方案,就像我之前那样。删除行以注册单元格,并将reuseIdentifier放在处理单元格的位置。对不起我对此的迟到回复

答案 1 :(得分:3)

当我使用Xcode 6.3 beta和IOS 8时,我遇到了类似的问题。我解决了这个问题。首先选择视图并禁用Storyboard中的大小类。 然后清理并构建应用程序。之后启用大小类。它现在可以工作了。