有人能帮助我吗?我正在尝试制作一个按钮轮播 - 每个按钮都有不同的背景图像,但我没有做到。
最后它起作用了,但我不知道,为什么我总是收到警告(在 [image objectAtIndex:0], [image objectAtIndex:1], [image objectAtIndex:2] 上):
“UIImage”可能不会响应“objectAtIndex”。
非常感谢!
我的 iCarouselExampleViewController.m 源代码:
#import "iCarouselExampleViewController.h"
@implementation iCarouselExampleViewController
@synthesize carousel;
- (void)dealloc
{
carousel.delegate = nil;
carousel.dataSource = nil;
[carousel release];
[super dealloc];
}
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
//configure carousel
carousel.type = iCarouselTypeCoverFlow2;
}
- (void)viewDidUnload
{
[super viewDidUnload];
self.carousel = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
#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 5;
}
- (NSUInteger)numberOfVisibleItemsInCarousel:(iCarousel *)carousel
{
//limit the number of items views loaded concurrently (for performance reasons)
return 5;
}
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
UIButton *button = (UIButton *)view;
if (button == nil)
{
UIImage *image=[NSArray arrayWithObjects:
[UIImage imageNamed:@"image1.png"],
[UIImage imageNamed:@"image2.png"],
[UIImage imageNamed:@"image3.png"],nil];
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 200.0f, 200.0f);
[button setTitle:[NSString stringWithFormat:@"%i", index] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
switch (index) {
case 0:
{
[button setImage:(UIImage*)[image objectAtIndex:0] forState:UIControlStateNormal];
}
break;
case 1:
{
[button setImage:(UIImage*)[image objectAtIndex:1] forState:UIControlStateNormal];
break;
}
case 2:
{
[button setImage:(UIImage*)[image objectAtIndex:2] forState:UIControlStateNormal];
}
break;
}
}
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
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
@结尾