iOS:原型UITableViewCell中的UIImage和其他项目不能始终如一地显示

时间:2015-01-13 04:29:59

标签: ios objective-c iphone uitableview xcode-storyboard

我已经将UIImageView正确连接到原型单元作为弱IBOutlet,但是当我运行程序时,我无法在模拟器和设备上显示它。当我尝试删除原型单元时,这变得更加奇怪并重新生成它,但有其他项目(例如:UIButtons,UILabels)没有出现。

尝试“干净”,“清理构建文件夹”,从我的设备中删除了应用程序,甚至从我的mac中删除了“派生数据”文件夹但无济于事。甚至尝试将新的UILabel装入细胞并让它不显示!

我已经确定:

  1. 这些项目已正确连接到我的单元格.h文件作为弱的非原子IBOulets,如下所示:

    @property (weak, nonatomic) IBOutlet UIImageView *coverImage; @property (weak, nonatomic) IBOutlet UILabel *activityLabel;

  2. 正确完成了cellForRowAtIndexPath:

  3. {

    NewsFeedCell * cell = [tableView dequeueReusableCellWithIdentifier:@"NewsFeedCell" forIndexPath:indexPath];
    
    
    if (self.dataInStorage)
    {
        NSDictionary * newsFeedData = (NSDictionary*) [NSKeyedUnarchiver unarchiveObjectWithData:self.dataInStorage];
        NSDictionary * dataToDisplay = [[newsFeedData objectForKey:@"Content"] objectAtIndex:indexPath.row];
    
    
        //ActivityLabel
        NSInteger typeID = [[dataToDisplay objectForKey:@"TypeID"] integerValue];
        switch (typeID)
        {
            case 3:
                cell.activityLabel.text = [NSString stringWithFormat:@"created an event - %@", [dataToDisplay objectForKey:@"Title"]];
                break;
    
            case 7:
                cell.activityLabel.text = [NSString stringWithFormat:@"added a listing - %@", [dataToDisplay objectForKey:@"Title"]];
                break;
    
            default:
                break;
        }
    
        //CoverImage
        UIImage * coverImage = [UIImage imageWithData:[dataToDisplay objectForKey:@"CoverImage"]];
    
        CGImageRef cgref = [coverImage CGImage];
        CIImage *cim = [coverImage CIImage];
    
        if (!(cim == nil && cgref == NULL))
        {
            //Image is available
            cell.coverImage.image =[UIImage imageWithData:coverImage];
        }
    
    }
    
    return cell;  
    

    我认为这个问题可能出现在配置或故事板设置中,但是在超过10个小时后我仍然无法弄清楚。任何需要源代码的人,请告诉我,以便我可以将整个文件夹发送给您。

    需要帮助!

3 个答案:

答案 0 :(得分:0)

检查Identity Inspector中的UIImageView的大小(出现在Xcode的右侧)。

有时(宽度,高度)会自动变为(0,0)

答案 1 :(得分:0)

好的,我发现了我认为这里的错误。 断开盖子图像插座连接, 创建一个新的ImageView并将其放在故事板中。创建与类和插座的连接。应该这样做。

您似乎已将副本粘贴到另一个视图中的插座,请断开所有连接并再次将其与您的班级(newsFeedcell)和故事板中的插座重新连接。这样做可以防止将来发生冲突。

干杯,希望这能解决它

[编辑]

编写此代码。

cell.imageview.image = coverimage

答案 2 :(得分:0)

在另一个帖子中发布问题后,得到了@ Paulw11的答案。显然,当我的尺寸被配置为注册时,我错误地将项目添加到单元格中,而不是通常的任何我使用的任何项目。当然,这些物品在我的iPhone设备上不可见! (reg-reg将仅在iPad设备上显示这些项目)未来的编码员要小心!

再次感谢@ Paulw11的大力帮助。还有@LightYagami和@AashishTamsya的努力。

干杯!

链接到其他主题:iOS: Items in custom UITableViewCell not showing up consistently. Storyboard bug?