我将iCarousel添加到我的应用程序中,但它不起作用。在我的其他应用程序中它工作。 我在InterfaceBuilder中链接了视图,委托和数据源
ViewController.h
#import <UIKit/UIKit.h>
#import "TermineView.h"
#import "iCarousel.h"
@interface ViewController : UIViewController <iCarouselDataSource, iCarouselDelegate>{
IBOutlet UIWebView *WebView;
NSURLRequest *Request;
...
}
...
@property (nonatomic, retain) IBOutlet iCarousel *carousel;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize carousel;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
carousel.type = iCarouselTypeRotary;
carousel.center = CGPointMake(160.0, 250.0);
[self.view addSubview:carousel];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)viewDidUnload
{
[super viewDidUnload];
self.carousel = nil;
}
#pragma mark -
#pragma mark iCarousel methods
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
//generate 100 buttons
//normally we'd use a backing array
//as shown in the basic iOS example
//but for this example we haven't bothered
return 100;
}
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
UIButton *button = (UIButton *)view;
if (button == nil)
{
//no button available to recycle, so create new one
UIImage *image = [UIImage imageNamed:@"page.png"];
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setBackgroundImage:image forState:UIControlStateNormal];
button.titleLabel.font = [button.titleLabel.font fontWithSize:50];
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
}
//set button label
[button setTitle:[NSString stringWithFormat:@"%i", index] forState:UIControlStateNormal];
return button;
}
#pragma mark -
#pragma mark Button tap event
- (void)buttonTapped:(UIButton *)sender
{
//get item index for button
NSInteger index = [carousel indexOfItemViewOrSubview:sender];
[[[[UIAlertView alloc] initWithTitle:@"Button Tapped"
message:[NSString stringWithFormat:@"You tapped button number %i", index]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] autorelease] show];
}
@end
任何想法我做错了什么? 我看到一个空洞的景象......
答案 0 :(得分:0)
您是否尝试在数据源方法中放置断点以查看它们是否被调用?
如何使用调试器检查是否已在iCarousel视图中正确设置了轮播的dataSource属性?
我的猜测是dataSource没有被正确绑定,但没有更多信息很难确定。
答案 1 :(得分:0)
请首先检查NSArray
数组是否为nil,因为以下方法编写它并在数据源上放置断点并在编译和构建后委托方法....它的工作代码... < / p>
- (void)awakeFromNib
{
//set up data
//your carousel should always be driven by an array of
//data of some kind - don't store data in your item views
//or the recycling mechanism will destroy your data once
//your item views move off-screen
self.items = [NSMutableArray array];
for (int i = 0; i < 1000; i++)
{
[self.items addObject:@(i)];
}
}
试一试....
谢谢