iCarousel数据源问题

时间:2013-08-15 13:02:06

标签: ios icarousel

我开始使用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.'
  1. 我添加了QuartzCore框架
  2. 将iCarousel复制到我的项目
  3. 从示例中复制XIB
  4. 我使用了这个例子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
    

1 个答案:

答案 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;重置内容和设置