8

我的项目中有一个实体的详细信息屏幕(实际上是“照片”),可以有评论。如果是这样,屏幕会显示 3 个最新的和“查看全部”按钮。问题是如何显示这 3 条评论。(在 Android 上,我只是使用 LinearLayout。) TableView 不适合我所看到的(由于具有静态高度),所以我决定创建我的自定义模板/部分视图 CommentView 并将其添加到每个评论的 scrollView 中。

我创建了带有视图和一些子控件(用户照片、用户名、日期、文本)的 XIB 文件。另外,我创建了从 UIView 提供的 CommentView 类。文件的所有者设置为 CommentView。顶级视图的类也设置为 CommentView(我尝试了各种组合)。我从顶级视图(vContent)和所有子视图创建了出口。

这是 CommentView.h:

@interface CommentView : UIView

@property (strong, nonatomic) IBOutlet CommentView *vContent;
@property (weak, nonatomic) IBOutlet UIImageView *ivUserPhoto;
@property (weak, nonatomic) IBOutlet UILabel *lUserName;
@property (weak, nonatomic) IBOutlet UILabel *lCreated;
@property (weak, nonatomic) IBOutlet UILabel *lText;


@end

这是 CommentView.m:

#import "CommentView.h"

@implementation CommentView

-(void)awakeFromNib {
    [[NSBundle mainBundle] loadNibNamed:@"CommentView" owner:self options:nil];
    [self addSubview: self.vContent];
}

@end

然后我尝试将评论添加到实体的视图中,并从问题标题中得到该错误。这不是我第一次得到它,但现在我真的不知道问题是什么......

此行发生错误(我从 PhotoViewController 调用它):

CommentView *commentView = [[[NSBundle mainBundle] loadNibNamed:@"CommentView" owner:self options:nil]objectAtIndex:0];

在此处输入图像描述

全文:'[setValue:forUndefinedKey:]:此类不符合键 ivUserPhoto 的键值编码。'

我真的很感谢你的帮助!谢谢!

4

2 回答 2

9

我在这里找到了另一个例子。所以我像这样重写我的 CommentView.m ......

@implementation CommentView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];

    if (self) {
        NSArray *nibContents = [[NSBundle mainBundle]loadNibNamed:@"CommentView" owner:self options:nil];
        [self addSubview:nibContents[0]];
    }

    return self;
}

@end

...以及我添加这样的子视图的方式:

CommentView *commentView = [[CommentView alloc]initWithFrame:CGRectMake(0, 0, 320, 81)];

commentView.lUserName.text = comment.user.name;
[self.vComments addSubview:commentView];

现在它正在按我的预期工作。

我仍然不完全理解为什么在我的问题中有很多示例以及为什么它对我不起作用...我希望我的代码可以为某人节省时间...

于 2013-11-01T21:46:57.843 回答
0

这个问题意味着你的 xib 有一些不正确的映射。这通常发生在您更改属性的名称时。

为确保您不会错过问题,请转到您的 xib 文件,断开所有插座并重新映射它们

于 2013-11-01T18:08:18.367 回答