我有这个奇怪的问题,我的集合视图从plist文件加载数据,在iOS7上完全正常,但在iOS8中没有。
我的单元格只包含一个显示plist文件中特定项目的UILabel
。它实际上只是一个字符串列表。如果我使用它,细胞反应正常并且一切都很好,它有效,期待一件事:
标签不会出现。如果我点击它我有数据,程序运行正常。
如果我再次向下浏览,则会使用正确的标签重新加载。
它实际上只是第一次没有显示标签的装载。
我尝试过重新加载数据按钮以确保尽可能晚地调用它,但无济于事。
有任何线索吗?
以下是一些代码:
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath{
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.layer.borderColor = ClearColor.CGColor;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"TagCell";
UICollectionViewCell *cell = [_cvTags dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[UICollectionViewCell alloc]init];
[cell setRestorationIdentifier:cellIdentifier];
}
UILabel *lbT = (UILabel*)[cell viewWithTag:1];
if (score == 1){
lbT.text = [[tags objectForKey:PLIST_Plus]valueForKey:[NSString stringWithFormat:@"%i",indexPath.row]];
}
if (score == -1){
lbT.text = [[tags objectForKey:PLIST_Minus]valueForKey:[NSString stringWithFormat:@"%i",indexPath.row]];
}
cell.contentView.backgroundColor = ClearColor;
cell.layer.borderColor = ClearColor.CGColor;
cell.layer.borderWidth = 3;
cell.layer.cornerRadius = 20;
return cell;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
if (score == 1){
return [[tags objectForKey:PLIST_Plus] count];
}
if (score == -1){
return [[tags objectForKey:PLIST_Minus] count];
}
else{
return 0;
}
}
tags = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"tags" ofType:@"plist"]];
它只是一个带字典的XML文件。
注意:
在iOS7上它真的很好。
我对另一个视图的tableview有完全相同的问题。但最糟糕的是。我使用硬编码标签 INSIDE 使用cellForRow
方法填充单元格,但在重复使用之前,它们仍然无法显示。