2013-11-01 123 views
7

我有我的项目中的一些实体的细节屏幕(实际上是'照片'),可以有评论。如果有,屏幕会显示最近的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]; 

enter image description here

全文: '[setValue:forUndefinedKey:]:该类不是密钥ivUserPhoto的密钥编码标准。“

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

+0

有你看了很多涉及这个错误信息的现有问题? – rmaddy

+0

是的。在发布这个问题之前,我发现了很多红色。此外,我有很多次这个错误,但只有这一次,我不知道是什么原因... –

+0

的原因很简单。 'PhotoViewController'不是'CommentView',但在某处(大概是你的笔尖),你是这样对待它的。 –

回答

7

我发现另一个例子在这里。所以我重写我的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]; 

现在它正在按我的预期。

我还是不完全理解为什么有很多的例子一样在我的问题,为什么它不为我工作...我希望我的代码将节省时间的人......

+0

这只是保存了我的培根!我在不同的问题上看到了很多类似的答案,但关键对我来说,是调用'loadNibNamed'而不是'instantiateWithOwner',在其他情况下使用。谢谢! – dustinrwh

0

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

要确保你不会错过这个问题,去你的XIB文件,断开所有的网点,并再次将它们映射

+0

发布前提出了几个问题:( –

相关问题