2013-11-01 48 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

發佈前提出了幾個問題:( –

相關問題