如何在iCarousel iPhone中为不同位置的图像实现删除功能 [英] How to implement delete functionality for images in different positions in iCarousel iphone

查看:61
本文介绍了如何在iCarousel iPhone中为不同位置的图像实现删除功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用iCarousel,如图所示此处,其轮播类型为Liner Carousel,并实现了删除功能.能够删除轮播中的图像,并且当我尝试删除可见屏幕中的任何其他图像时,它将移至轮播框架并删除.
我需要从原始位置删除图像.

I am using iCarousel as shownh here with carousel type Liner Carousel and implemented delete functionalty .I am able to delete the image in carousel and when I attempt to delete any other iomage in the visible screen It is moved to carousel frame and deleted.
I need to delete the image from its original position.

- (void)loadView {

    [super loadView];

    self.view.backgroundColor = [UIColor blackColor];
    
    carousel = [[iCarousel alloc] initWithFrame:CGRectMake(-130,300, 320, 100)];
    carousel.dataSource = self;
    carousel.delegate=self;
    carousel.type = iCarouselTypeLinear;
    carousel.scrollEnabled=YES;

    imageView=[[UIImageView alloc]initWithFrame:CGRectMake(60, 50, 200, 200)];
    [self.view addSubview:imageView];


}

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

    UIImage *image = [imagesArray objectAtIndex:index];

    UIButton *button =[UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0,0, 60, 60); 
    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    button.titleLabel.font = [button.titleLabel.font fontWithSize:50];
    [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
    button.tag=index;
    NSLog(@"tag is %d",button.tag);
        
    UIButton *deleteButton=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    deleteButton.frame= CGRectMake(50, -5, 20 ,20);
    UIImage *img = [UIImage imageNamed:@"close.png"];
    [deleteButton setImage:img forState:UIControlStateNormal];
    [deleteButton addTarget:self action:@selector(deleteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [button addSubview:deleteButton];
        
    return button;
}

-(void)deleteButtonClicked:(int )sender
{
    NSInteger currentIndex = carousel.currentItemIndex;
    [carousel removeItemAtIndex:currentIndex animated:YES];
   
}

请帮帮我.

推荐答案

您不应该删除carousel.currentItemIndex上的项目,因为它不是与您单击的按钮相对应的项目,而只是在按钮中当前居中的项目.轮播.

You shouldn't delete the item at the carousel.currentItemIndex because that is not the item corresponding to the button you clicked, that's just the currently centred item in the carousel.

要获取您单击的按钮的正确项目索引,请执行以下操作:

To get the correct item index for the button you clicked, do this:

-(void)deleteButtonClicked:(id)sender
{
    //get the index of the item view containing the button that was clicked
    NSInteger index = [carousel indexOfItemViewOrSubview:sender];

    //update the data model (always do this first)
    [imagesArray removeObjectAtIndex:index];

    //remove item from carousel
    [carousel removeItemAtIndex:index animated:YES];
}

这篇关于如何在iCarousel iPhone中为不同位置的图像实现删除功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆