"class not key value coding-compliant [...]" 尝试引用自定义视图插座时
"class not key value coding-compliant [...]" when trying to reference custom view outlets
我是 iOS 社区的新手,所以这可能是个愚蠢的问题。我正在尝试创建一个带有子视图的自定义视图,我可以在代码中与之交互。这是我所做的:
- 我创建了一个PageView.xib
- 我创建了 PageView.m 和 PageView.h 个文件
- 在 PageView.xib > Identity Inspector > Custom Class > Class 中,我输入 "PageView"
- 我拖了一个标签到.xib
我控制+拖动标签到PageView.h,有代码
#import <UIKit/UIKit.h>
#ifndef LosAngeles_PageView_h
#define LosAngeles_PageView_h
@interface PageView : UIView
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
#endif
然后我尝试在我在 MainViewController 中定义的 ScrollView 中使用这个 View
- (void)viewDidLoad {
[super viewDidLoad];
// Get screen dimensions
CGRect fullScreenFrame = [[UIScreen mainScreen] bounds];
NSMutableArray *pages = [NSMutableArray array];
// Initialize Views
for(int i = 0; i < kNumberOfPages; i++){
// Create new Frame
CGRect pageFrame;
// Set x offset
pageFrame.origin.x = i * fullScreenFrame.size.width;
pageFrame.origin.y = 0;
pageFrame.size = fullScreenFrame.size;
// Get "PageView" nib content
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"PageView" owner:nil options:nil];
// Create view from the nib & set its size
UIView *newPage = [nibContents lastObject];
newPage.frame = pageFrame;
// Add it into the Array & the ScrollView
[pages addObject:newPage];
[mainScrollView addSubview:newPage];
}
// Resize the content of the ScrollView (otherwise it doesn't scroll)
mainScrollView.contentSize = CGSizeMake(fullScreenFrame.size.width * kNumberOfPages, fullScreenFrame.size.height);
}
尝试 运行 但出现错误
'NSUnknownKeyException', reason: '[<NSObject 0x7a7dbb70>
setValue:forUndefinedKey:]: this class is not key value
coding-compliant for the key label.'
我做错了什么?
额外信息:
- PageView.xib 文件所有者在 "Outlets" 中显示 "Label <-> label"(这里只有一个)
- 标签视图在 "Referencing Outlets" 中显示 "Label <-> File's Owner"(这里也只有一个)
- 所有三个文件都在目标成员资格中勾选了项目
- 当我不引用插座时一切正常
- 尝试清理、删除缓存和其他类似的东西。
感谢您的宝贵时间,请随时提问,如果有人想更准确地查看,我可以将项目放在 Github 上。
朱利安
您可以在此处查看代码。我已经用新文件 "PageViewNew"
更新了代码
https://www.dropbox.com/s/eogulm5jkbsero9/losangeles.zip?dl=0
工作正常。
我是 iOS 社区的新手,所以这可能是个愚蠢的问题。我正在尝试创建一个带有子视图的自定义视图,我可以在代码中与之交互。这是我所做的:
- 我创建了一个PageView.xib
- 我创建了 PageView.m 和 PageView.h 个文件
- 在 PageView.xib > Identity Inspector > Custom Class > Class 中,我输入 "PageView"
- 我拖了一个标签到.xib
我控制+拖动标签到PageView.h,有代码
#import <UIKit/UIKit.h> #ifndef LosAngeles_PageView_h #define LosAngeles_PageView_h @interface PageView : UIView @property (weak, nonatomic) IBOutlet UILabel *label; @end #endif
然后我尝试在我在 MainViewController 中定义的 ScrollView 中使用这个 View
- (void)viewDidLoad { [super viewDidLoad]; // Get screen dimensions CGRect fullScreenFrame = [[UIScreen mainScreen] bounds]; NSMutableArray *pages = [NSMutableArray array]; // Initialize Views for(int i = 0; i < kNumberOfPages; i++){ // Create new Frame CGRect pageFrame; // Set x offset pageFrame.origin.x = i * fullScreenFrame.size.width; pageFrame.origin.y = 0; pageFrame.size = fullScreenFrame.size; // Get "PageView" nib content NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"PageView" owner:nil options:nil]; // Create view from the nib & set its size UIView *newPage = [nibContents lastObject]; newPage.frame = pageFrame; // Add it into the Array & the ScrollView [pages addObject:newPage]; [mainScrollView addSubview:newPage]; } // Resize the content of the ScrollView (otherwise it doesn't scroll) mainScrollView.contentSize = CGSizeMake(fullScreenFrame.size.width * kNumberOfPages, fullScreenFrame.size.height); }
尝试 运行 但出现错误
'NSUnknownKeyException', reason: '[<NSObject 0x7a7dbb70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'
我做错了什么?
额外信息:
- PageView.xib 文件所有者在 "Outlets" 中显示 "Label <-> label"(这里只有一个)
- 标签视图在 "Referencing Outlets" 中显示 "Label <-> File's Owner"(这里也只有一个)
- 所有三个文件都在目标成员资格中勾选了项目
- 当我不引用插座时一切正常
- 尝试清理、删除缓存和其他类似的东西。
感谢您的宝贵时间,请随时提问,如果有人想更准确地查看,我可以将项目放在 Github 上。
朱利安
您可以在此处查看代码。我已经用新文件 "PageViewNew"
更新了代码https://www.dropbox.com/s/eogulm5jkbsero9/losangeles.zip?dl=0
工作正常。