我开始使用iCarousel
,但收到了此错误:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIView 0x8372530> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key dataSource.'
我使用了这个例子iCarousel
我的代码:
#import <UIKit/UIKit.h>
#import "iCarousel.h"
@interface UsersViewController : UIViewController <iCarouselDataSource, iCarouselDelegate>
@property (strong, nonatomic) IBOutlet iCarousel *aCarousel;
@property (strong, nonatomic) IBOutlet UILabel *label;
@property (nonatomic) BOOL wrap;
@property (strong, nonatomic) NSMutableArray *animals;
@property (strong, nonatomic) NSMutableArray *descriptions;
- (IBAction)onTapBackButton:(id)sender;
@end
#import "UsersViewController.h"
@interface UsersViewController ()
@end
@implementation UsersViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
_wrap = NO;
self.animals = [NSMutableArray arrayWithObjects:@"Bear.png",
@"Zebra.png",
@"Tiger.png",
@"Goat.png",
@"Birds.png",
@"Giraffe.png",
@"Chimp.png",
nil];
self.descriptions = [NSMutableArray arrayWithObjects:@"Bears Eat: Honey",
@"Zebras Eat: Grass",
@"Tigers Eat: Meat",
@"Goats Eat: Weeds",
@"Birds Eat: Seeds",
@"Giraffes Eat: Trees",
@"Chimps Eat: Bananas",
nil];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.aCarousel.type = iCarouselTypeCoverFlow2;
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Main Actions
- (IBAction)onTapBackButton:(id)sender
{
[self dissmis];
}
#pragma mark - Main methods
- (void)dissmis
{
[self dismissViewControllerAnimated:YES completion:nil];
}
#pragma - mark iCarousel Delegate
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
return [self.animals count];
}
- (NSUInteger)numberOfVisibleItemsInCarousel:(iCarousel *)carousel
{
// limit the number of item views loaded concurrently (for performance)
return 7;
}
- (UIView*)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
// create a numbered view
view = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[self.animals objectAtIndex:index]]];
return view;
}
- (NSUInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel
{
return 0;
}
- (CGFloat)carouselItemWidth:(iCarousel *)carousel
{
// usually this should be slightly wider than the item views
return 240;
}
- (BOOL)carouselShouldWrap:(iCarousel *)carousel
{
return self.wrap;
}
- (void)carouselDidScroll:(iCarousel *)carousel
{
[self.label setText:[NSString stringWithFormat:@"%@", [self.descriptions objectAtIndex:carousel.currentItemIndex]]];
}
@end
答案 0 :(得分:1)
我不知道究竟是什么问题,但看了几个其他帖子后,我认为可能是问题的前5名,希望它有所帮助,祝你好运broski
1
我发现这个错误最常见的地方就是你 从不是的类中的xib实例化一个视图 xib的所有者。
我的意思是你可能会打这样的东西:
[[NSBundle mainBundle] loadNibNamed:@“MyView”所有者:self options:nil]; 你正在改变所有者,所以你必须确定那个类 self指的是具有“MyView”所需的所有IBOutlet属性。 通常这是在Interface Builder中完成的,但在这种情况下你就是这样 以编程方式设置您的所有者,这意味着您无法进行 IB中的连接。当IBOutlets不存在时,应用程序会尝试 做出这些连接并失败,给出你看到的错误。
我的建议(不知道你到目前为止提供的任何信息)是 检查你是否在没有正确的情况下拨打了这个电话 IBOutlets。
2
我已将界面构建器中的UIControl插座连接到 IBO所有者中的IBOutlet。出于某种原因,IBOutlet被删除了 来自店主,但对出口的提及仍悬而未决 xib。这总会给我一些经验教训:什么时候 在实施中删除任何vars的出口,请务必 取消了IB中的相应连接
3
我发现了问题,这是因为我使用了一个按钮 AboutViewController,我没有声明该按钮的属性。
4
同样,当您重命名视图时,请不要忘记删除参考 文件的所有者。它也可能引发此错误。
5
已修复 - 转到iOS模拟器&gt;重置内容和设置