如何为 icarousel 中的每个按钮创建单独的操作?

Posted

技术标签:

【中文标题】如何为 icarousel 中的每个按钮创建单独的操作?【英文标题】:How to create individual action for each button in icarousel? 【发布时间】:2012-06-17 08:07:21 【问题描述】:

我创建了一个应用程序,它使用 icarousel 在 Coverflow 中显示 8 个按钮。我必须为每个按钮分配不同的操作。这是我的 viewcontroller.m 文件代码..

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel

return NUMBER_OF_ITEMS;


- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index   reusingView:(UIView *)view


UIImage *buttonImage=[NSArray arrayWithObjects:[UIImage imageNamed:@"Cover_0.png"],
                      [UIImage imageNamed:@"Cover_1.png"],
                      [UIImage imageNamed:@"Cover_2.png"],
                      [UIImage imageNamed:@"Cover_3.png"],
                      [UIImage imageNamed:@"Cover_4.png"],
                      [UIImage imageNamed:@"Cover_5.png"],
                      [UIImage imageNamed:@"Cover_6.png"],
                      [UIImage imageNamed:@"Cover_7.png"],nil];

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 200.0f, 200.0f);

[button setImage:(UIImage*)[buttonImage objectAtIndex:index] forState:UIControlStateNormal];    
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
return button;   


- (void)buttonTapped:(UIButton *)sender


我在这里卡住了...现在我想为每个按钮分配不同的操作。但是如果我在 buttonTapped 下声明一个操作,它将被分配给所有按钮..有人可以帮忙吗?...

除了我之前的问题之外,我还在 xib 文件中的该按钮中添加了其他两个按钮和两个事件,并在我的 .m 文件中定义了方法...但是如果我在模拟器上运行它,它只会显示为图像并且无法交互用那个按钮...任何想法请...

【问题讨论】:

【参考方案1】:

您可以像这样询问轮播按钮按下了哪个按钮:

- (void)buttonTapped:(UIButton *)sender

    NSInteger index = [carousel indexOfItemViewOrSubview:sender];
    switch(index) 
        case 0:
            //do action number 1
            break;
        case 1:
            //do action number 2
            break;
        etc....
    

【讨论】:

【参考方案2】:

只需根据按钮标记值调用 base。

获取按钮标签值

- (void)buttonTapped:(UIButton *)sender


uibutton *btn=(uibutton *) sender;

nslog(@"button tag== %d",btn.tag);


【讨论】:

tks...但它似乎不适用于我的代码..这是我们可以使用 NSArray 声明操作的一种方式吗?... 嘿,首先在你的代码中添加按钮标签 - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view button.tag=index;跨度> 这曾经是推荐的解决方案,但 iCarousel 现在有一个内置方法可以轻松完成此操作,而无需使用标签。见我上面的回答。

以上是关于如何为 icarousel 中的每个按钮创建单独的操作?的主要内容,如果未能解决你的问题,请参考以下文章

如何为每个 RadioButton 设置单独的颜色?

如何为 iCarousel 的气缸中的车轮旋转设置计时器

如何为数组/ JavaScript中的每个项目创建不同的按钮

如何为iCarousel iphone中不同位置的图像实现删除功能

具有每个图像反射的 iCarousel

如何为 select2 列表的每个项目创建一个按钮?