我想在我的objective-c应用程序中使用轮播。我有一个包含UIView(具有特定宽度和高度)的UIViewController。这个UIView的内容必须是一个旋转木马:我的旋转木马的每个项目都应该有一个图像和一些文本。我也希望在旋转木马下,点(小圆圈)。这些点表示项目的数量,当前项目的点应该具有与其他点不同的颜色。我发现最着名的旋转木马库是iCarousel。
我的问题: 如何使用带有UIViews的iCarousel作为项目?
修改:
我将iCarousel
添加到我的项目中,将iCarousel作为我的UIView的子类,在storyboad中为@property (weak, nonatomic) IBOutlet iCarousel *carouselView;
。然后在myViewController.h
我添加了
@interface myViewController : UIViewController<iCarouselDataSource>
。
在myViewController.m
:
- (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
return 4;
}
-(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view {
self.carouselTitle.text = [self.titleDataSource objectAtIndex:index];
self.carouselImage.image = [UIImage imageNamed:[self.imageDataSource objectAtIndex:index]];
return self.carouselView;
}
现在的问题是,当我运行我的应用程序时,它在iCarousel.m中崩溃提到这一行:[_contentView addSubview:[self containView:view]];
(第1260行)
请帮忙吗?
答案 0 :(得分:1)
iCarousel使用您需要实现的dataSource(类似于UITableView)。主要方法
-(UIView)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
允许您动态创建每个项目的视图。如果需要,可以忽略reusingView,但如果轮播中的所有视图都是相同的类型,那么在它上面设置属性并返回它而不是创建新属性会更快。
你需要:
iCarouselDataSource
numberOfItemsInCarousel
和viewForItemAtIndex...
编辑问题回复:
您应该返回仅代表该项目的单个轮播卡的新视图,而不是self.carouselView
。它应该是一个完全新分配的对象或传入的reusingView:view
,你可以改变它的属性(它传递你已经离屏并可以更新的旧视图)。
我强烈建议您查看项目中的示例(尤其是Basic项目)并运行并理解它们。