0

如何在不同的 uibutton 操作中将不同的图像数组传递给 iCarousel。如何用不同的图像重新加载 iCarousel?

提前致谢。

4

2 回答 2

5

有一种方法- (void)reloadData; 与您正在使用的方法相同UITableView

这是来自 GitHub/iCarousel 的描述,

这会从 dataSource 重新加载所有轮播视图并刷新轮播显示。

于 2013-05-16T05:41:59.413 回答
1

用iCarouseliCarouselButtonsDemo上的项目试试这个:

在 iCarouselExampleViewController.h 文件中

#import <UIKit/UIKit.h>
#import "iCarousel.h"


@interface iCarouselExampleViewController : UIViewController <iCarouselDataSource, iCarouselDelegate> {
    NSMutableArray *arrImages;
}

@property (nonatomic, retain) IBOutlet iCarousel *carousel;
@property (nonatomic, retain) NSMutableArray *arrImages;

@end

在 iCarouselExampleViewController.m 文件中

#import "iCarouselExampleViewController.h"

@implementation iCarouselExampleViewController

@synthesize carousel,arrImages;

- (void)dealloc {
    carousel.delegate = nil;
    carousel.dataSource = nil;
    [carousel release];
    [arrImages release];
    [super dealloc];
}

#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad     {
    [super viewDidLoad];

    arrImages = [[NSMutableArray alloc] init];

    for (int i = 0; i < 100; i++) {
        [arrImages addObject:[NSString stringWithFormat:@"Image%d.png",i]];
    }
    //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 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];
[button setBackgroundImage:[UIImage imageNamed:[arrImages objectAtIndex:index]] forState:UIControlStateNormal];
    [button setImage:[UIImage imageNamed:[arrImages objectAtIndex: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
于 2013-05-16T05:36:51.747 回答