iCarousel未显示,方法未被处理

时间:2014-07-30 08:39:15

标签: ios objective-c uiview delegates icarousel

我正在努力实现左侧iCarousel对象的权利,并且双方都有淡入淡出。

所以我将GtiHub项目导入我的应用程序,为i​​Carousel分配了一个UIView ...将它链接到我的MainViewController上的IBOutLet并传递了Delegate以及DataSource,就像UITableViewController一样。

虽然它不会显示,但我不确定导致此问题的原因。

我的iCarousel DataSource是一个NSMutableArray *项目;设计如下:

for (int i = 0; i < 100; i++)
{
    [_items addObject:@(i)];
}

我正在ViewDidLoad中初始化iCarousel,如下所示

- (void)viewDidLoad
{
  [super viewDidLoad];
  //Initialize Carousel
  _carousel = [[iCarousel alloc] init];
  _carousel.delegate = self;
  _carousel.dataSource = self;

  //Carousel Testing Data
  for (int i = 0; i < 100; i++)
  {
     [_items addObject:@(i)];
  }

  //configure carousel
  _carousel.type = iCarouselTypeRotary;

}

我的转盘代表方法如下:

#pragma mark -
#pragma mark iCarousel methods

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
   //return the total number of items in the carousel
   return [_items count];
}

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
   UILabel *label = nil;

   //create new view if no view is available for recycling
   if (view == nil)
   {
      view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 200.0f)];
      ((UIImageView *)view).image = [UIImage imageNamed:@"page.png"];
      view.contentMode = UIViewContentModeCenter;

      label = [[UILabel alloc] initWithFrame:view.bounds];
      label.backgroundColor = [UIColor clearColor];
      label.font = [label.font fontWithSize:50];
      label.tag = 1;
      [view addSubview:label];
   }
  else
   {
      //get a reference to the label in the recycled view
      label = (UILabel *)[view viewWithTag:1];
   }


  label.text = [_items[index] stringValue];
  return view;
}

 - (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value
 {
    switch (option)
    {
       case iCarouselOptionFadeMin:
           return -0.2;
       case iCarouselOptionFadeMax:
           return 0.2;
       case iCarouselOptionFadeRange:
           return 2.0;
       default:
           return value;
     }
  }

故事板中的所有内容似乎都是连接在一起的,数据应该呈现出来,出了什么问题以及如何解决这个问题呢?

4 个答案:

答案 0 :(得分:7)

由于在加载视图后设置了DataSource数组(_items):

  1. 确保故事板中的轮播视图确实有IBOutlet给控制器,但&#39;代表&#39;和&#39; DataSource&#39;链接到文件的所有者(控制器或视图)。

  2. 将_carousel.delegate和_carousel.dataSource设置为&#39; self&#39;只有之后才能初始化并更新dataSource数组(在本例中为_items)。

答案 1 :(得分:0)

放置断点以检查是否正在调用iCarousel Datasource和Delegate方法。 如果未调用这些方法,请检查控制器是否遵循iCarousel协议,如下所示:

    @interface yourViewController : UIViewController <iCarouselDataSource, iCarouselDelegate>

显然你必须

   #import "iCarousel.h"

答案 2 :(得分:0)

更新:在viewDidLoad中,您有

  _carousel = [[iCarousel alloc] init];

看起来你忘了为_carousel设置一个框架并将其添加为subView。

答案 3 :(得分:0)

要获取imageView参考,请尝试以下操作:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 200.0f)];
imageView.image = [UIImage imageNamed:@"page.png"];
view = imageView;