2013-11-01 12 views
7

Mam ekran szczegółów jakiegoś elementu w moim projekcie (to właściwie "zdjęcie"), który może zawierać komentarze. Jeśli tak, ekran pokazuje 3 najnowsze i przycisk "Zobacz wszystko". Problem polegał na wyświetleniu 3 komentarzy. (Na Androidzie po prostu używam LinearLayout do tego.) TableView nie jest odpowiedni jak widzę (ze względu na wysokość statyczną), więc zdecydowałem się stworzyć mój własny szablon/częściowy widok CommentView i dodać go do scrollView dla każdego komentarza.Ta klasa nie jest kluczem do kodowania zgodnym z kluczem ... znowu

Utworzono plik XIB z widokiem i niektórymi kontrolkami podrzędnymi (zdjęcie użytkownika, nazwa użytkownika, data, tekst). Ponadto utworzyłem klasę CommentView, dostarczoną z UIView. Właściciel pliku jest ustawiony na CommentView. Klasa widoku najwyższego poziomu jest również ustawiona na CommentView (próbowałem różnych kombinacji). Stworzyłem ujście z widoku najwyższego poziomu (vContent) i ze wszystkich widoków podrzędnych.

To 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 

To CommentView.m:

#import "CommentView.h" 

@implementation CommentView 

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

@end 

Potem próbowałem dodawać komentarze do widzenia jednostki i dostał ten błąd z tytułu zapytania. To nie pierwszy raz mam go, ale teraz naprawdę nie wiem w czym jest problem ...

Błąd występuje na tej linii (ja to nazywam z PhotoViewController):

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

enter image description here

Pełny tekst: '[setValue: forUndefinedKey:]: ta klasa nie jest zgodna z kluczem dla klucza kluczowego ivUserPhoto. "

Naprawdę doceniam twoją pomoc! Dziękuję Ci!

+0

Mają cię spojrzał na WIELU istniejących pytań obejmujących ten sam komunikat o błędzie? – rmaddy

+0

Tak. Zanim napisałem to pytanie, mam dużo czerwonych rzeczy. Ponadto mam ten błąd wiele razy, ale tylko tym razem nie wiem, co jest powodem ... –

+0

powód jest prosty. 'PhotoViewController' nie jest' CommentView', ale gdzieś w (prawdopodobnie twój stalówka) traktujesz go jako taki. –

Odpowiedz

7

Znalazłem kolejny jeden przykład tutaj. Więc ja przepisać mój CommentView.m tak ...

@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 

... i sposób Dodaję subviews tak:

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

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

Teraz on pracuje, jak się spodziewałem.

wciąż nie w pełni zrozumieć, dlaczego istnieje wiele przykładów jak w moim pytaniu i dlaczego to nie działa dla mnie ... Mam nadzieję, że mój kod pozwoli zaoszczędzić czas na kogoś ...

+0

To właśnie uratowało mi boczek! Widziałem wiele podobnych odpowiedzi na różne pytania, ale klucz dla mnie było wywoływanie 'loadNibNamed' zamiast' instantiateWithOwner', który jest używany w innych przypadkach. – dustinrwh

0

Ten problem oznacza, że ​​Twój Xib ma nieprawidłowe mapowanie. Zdarza się to zazwyczaj po zmianie nazwy nieruchomości.

Aby mieć pewność, że nie stracisz problemu, przejdź do pliku XIB, odłącz wszystkie wyloty i mapować je ponownie

+0

Zrobiłem to kilka razy przed opublikowaniem pytania :( –

Powiązane problemy