2013-11-01 17 views
7

Tôi có màn hình chi tiết về một số thực thể trong dự án của tôi (thực tế là 'ảnh'), có thể có các nhận xét. Nếu có, màn hình hiển thị 3 nút gần đây nhất và nút 'Xem tất cả'. Vấn đề là làm thế nào để hiển thị 3 bình luận đó. TableView không phù hợp như tôi có thể thấy (do có chiều cao tĩnh), vì vậy tôi quyết định tạo mẫu tùy chỉnh/xem một phần CommentView của tôi và thêm nó vào scrollView cho mỗi nhận xét.Lớp này không phải là khóa mã hóa phù hợp với giá trị ... một lần nữa

Tôi đã tạo tệp XIB có chế độ xem và một số điều khiển con (ảnh người dùng, tên người dùng, ngày, văn bản). Ngoài ra, tôi đã tạo lớp CommentView, được phân phối từ UIView. Chủ sở hữu tệp được đặt thành CommentView. Lớp của chế độ xem cấp cao nhất cũng được đặt thành CommentView (Tôi đã thử các kết hợp khác nhau). Tôi đã tạo ra lối ra từ chế độ xem cấp cao nhất (vContent) và từ tất cả các chế độ xem con.

Đây là 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 

Đây là CommentView.m:

#import "CommentView.h" 

@implementation CommentView 

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

@end 

Sau đó, tôi đã cố gắng để thêm ý kiến ​​vào xem thực thể và nhận rằng lỗi từ tiêu đề câu hỏi. Đây không phải là lần đầu tiên tôi đã nhận nó nhưng bây giờ tôi thực sự không biết vấn đề là gì ...

Lỗi xảy ra trên dòng này (tôi gọi nó từ PhotoViewController):

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

enter image description here

Toàn bộ văn bản: '[setValue: forUndefinedKey:]: lớp này không phải là khóa mã hóa phù hợp với giá trị cho khóa ivUserPhoto.'

Tôi thực sự đánh giá cao sự trợ giúp của bạn! Cảm ơn bạn!

+0

Có bạn nhìn vào MANY câu hỏi hiện có bao gồm thông báo lỗi tương tự này? – rmaddy

+0

Có. Tôi đã đỏ rất nhiều trước khi đăng câu hỏi này. Ngoài ra, tôi đã có lỗi này nhiều lần nhưng chỉ lần này tôi không biết lý do là gì ... –

+0

lý do rất đơn giản. 'PhotoViewController' không phải là một' CommentView', nhưng ở đâu đó (có lẽ là nib của bạn) bạn đang xử lý nó như vậy. –

Trả lời

7

Tôi đã tìm thấy một số khác ví dụ ở đây. Vì vậy, tôi viết lại CommentView.m của tôi như thế này ...

@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 

... và cách tôi thêm subviews như thế này:

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

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

Bây giờ ta làm việc như tôi mong đợi.

Tôi vẫn chưa hiểu đầy đủ lý do tại sao có rất nhiều ví dụ như trong câu hỏi của tôi và tại sao nó không hoạt động đối với tôi ... Tôi hy vọng mã của tôi sẽ tiết kiệm thời gian cho một ai đó ...

+0

Điều này chỉ cần lưu bacon của tôi! Tôi thấy rất nhiều câu trả lời tương tự về câu hỏi khác nhau, nhưng chìa khóa đối với tôi là gọi 'loadNibNamed' thay vì' instantiateWithOwner' được sử dụng trong các trường hợp khác. – dustinrwh

0

Vấn đề đó có nghĩa là xib của bạn có một số ánh xạ không chính xác. Điều này thường xảy ra khi bạn thay đổi tên của một thuộc tính.

Để chắc chắn bạn không bỏ lỡ những vấn đề, đi đến file xib của bạn, hãy rút TẤT CẢ các cửa hàng và bản đồ chúng một lần nữa

+0

Tôi đã làm nó vài lần trước khi gửi câu hỏi: ( –

Các vấn đề liên quan