3

我正在尝试使用 iCarousel 库在我的应用程序中实现轮播类型选择器,但是当我加载应该显示轮播的视图时,什么都没有出现。

以下是相关代码:

iCarousel 委托方法:

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel {
    return 65;
}

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view {
    // Create a number label representing a numeric WPM option
    UILabel *numberLabel = nil;

    // Create new view if no view is available for recycling
    if (!view) {
        view = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 220, 60)];
        numberLabel = [[UILabel alloc] initWithFrame:view.bounds];
        numberLabel.backgroundColor = [UIColor clearColor];
        numberLabel.textColor = [UIColor whiteColor];
        numberLabel.textAlignment = NSTextAlignmentCenter;
        numberLabel.tag = 1;

        [view addSubview:numberLabel];
    }
    else {
        numberLabel = (UILabel *)[view viewWithTag:1];
    }

    // Calculate the number's value depending on the index value being retrieved
    int number = 200 + (index * 20);
    numberLabel.text = [@(number) stringValue];

    return view;
}

并在viewDidLoad:

    self.carousel = [[iCarousel alloc] initWithFrame:CGRectMake(120, 35, 150, 50)];
    self.carousel.type = iCarouselTypeLinear;
    [self.view addSubview:self.carousel];

我到底错过了什么把事情搞砸了?

4

3 回答 3

5

我没有使用 iCarousel,但也许你没有设置委托和/或数据源?

self.carousel.delegate = self;
self.carousel.dataSource = self;

从您显示的代码来看,您似乎并不这样做。

于 2013-04-06T20:16:09.497 回答
0

以上方法是icarousel委托方法,请检查是否调用它们。如果没有,请检查您是否在接口文件中添加了 iCarouselDelegate , iCarouselDataSource 。另外,您正在添加 icarousel 作为子视图。应该在nib 文件或故事板本身,而 numberlabel 应作为子视图添加到轮播视图中。请检查您是否正在做这样的事情:[carousel reloadData]; 这应该调用所有轮播委托方法。

于 2013-04-04T09:17:58.000 回答
0
self.carousel.delegate = self;
self.carousel.dataSource = self;
[self.carousel reload];
于 2013-04-06T21:24:30.533 回答