书架 删除书籍出错 uitableview无法刷新删除后的内容

阿婆 发布于 2013/04/01 11:59
阅读 226
收藏 0

做里个书架,用的展现方法是,uitablview 加button 的方式展现的。

设置了,每个button的tag。点击某个按钮就删除自己!(删除就出错了)

首先我先删除数组    

[BookArray removeObjectAtIndex:i]; (i 是按钮的tag)【数组里面的对象是已经删除了的】

删除里之后我调用

[self.BookTableview reloadData];方法

就发生里见很奇异的事情,我第一次随机点击一个按钮,他会删除最后一个按钮,然后我需要点击不同的按钮三次才会随机删除一个按钮,郁闷好混乱!

我只是想删除我随机选中的按钮。。附上代码

- (void)viewDidLoad

{

    [super viewDidLoad];

    

    BookArray = [[NSMutableArray alloc]initWithObjects:@"book.png",@"book.png",@"book.png",

                                                       @"book.png",@"book.png",@"book.png",

                                                       @"book.png",nil];

        [self _init];

    

    

}

#pragma mark - init uitableview - uiimageview


//初始化uitableview

-(id)_init

{


    if (self=[super init])

    {

        self.view=[[UIView alloc]initWithFrame:[[UIScreen mainScreen]applicationFrame]];

        

        //设置View背景

        UIImageView * background = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"3.png"]];

        background.frame=CGRectMake(0, 0, 320, 480);

        [self.view addSubview:background];

        

        //创建设置UItableview

        BookTableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, Kdevicewidth, Kdeviceheight-20-44-49) style:UITableViewStylePlain];

        

        BookTableview.dataSource=self;

        BookTableview.delegate=self;

        [BookTableview setRowHeight:115];

        [BookTableview setBackgroundColor:[UIColor clearColor]];

        [BookTableview setSeparatorStyle:UITableViewCellSeparatorStyleNone];

        [BookTableview setIndicatorStyle:UIScrollViewIndicatorStyleWhite];

        _BookTableview = BookTableview;

        [self.view addSubview:BookTableview];

        

        //滚动设置

        [self numberOfRow];

        if (rownum*115<=Kdeviceheight-20-44-49)

        {

           BookTableview.scrollEnabled=NO;

        }

        else

        {

            BookTableview.scrollEnabled=YES;

        }

        

         

        

    }


    return self;

    

}


#pragma mark forget it numberRow count


//计算uitableview的行数

-(void)numberOfRow

{

    if ([self.BookArray count]%3 !=0)

    {

        rownum = [self.BookArray count]/3+1;          

    }

    

    else

        

    {

        rownum = [self.BookArray count]/3;

    }


}


#pragma mark uitableview sourcedelegate delegate


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    [self numberOfRow];

    

    return rownum;

   

}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{


    static NSString * cellTableIdentifier = @"CellTableIdentifier";

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellTableIdentifier];

    if (cell==nil) {

        

        //设置cell

        CGRect cellFrame =CGRectMake(0, 0, 80, 115);

        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellTableIdentifier];

        cell.frame=cellFrame;

        

        //设置cell背景样式

        UIImageView * TableCellBg = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"2.png"]];

        TableCellBg.frame=CGRectMake(0, 0, 320, 115);

        cell.backgroundView=TableCellBg;

        cell.selectionStyle=UITableViewCellSelectionStyleNone;

        

        //cell中添加控件,以展示Book

        if (([BookArray count]%3==0)||([BookArray count]%3!=0 && indexPath.row<rownum-1))

        {

           

            //btn one

            btnOne = [[UIButton alloc]initWithFrame:CGRectMake(20, 20, 80, 60)];

            [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:

                              [BookArray objectAtIndex:(3*indexPath.row)],indexPath.row]]

                              forState:UITouchPhaseBegan];

            btnOne.tag=3*indexPath.row;

            [btnOne addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];

            [cell.contentView addSubview:btnOne];

            

            //btn two

            btntwo = [[UIButton alloc]initWithFrame:CGRectMake(120, 20, 80, 60)];

            btntwo.tag = 3*(indexPath.row)+1;

            [btntwo addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];

            [btntwo setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:

                              [BookArray objectAtIndex:(3*indexPath.row)+1],indexPath.row]]

                              forState:UITouchPhaseBegan];

            [cell.contentView addSubview:btntwo];

            

            //btn Three

            btnThree = [[UIButton alloc]initWithFrame:CGRectMake(220, 20, 80, 60)];

            btnThree.tag = 3*(indexPath.row)+2;

            [btnThree setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:

                              [BookArray objectAtIndex:(3*indexPath.row)+2],indexPath.row]]

                              forState:UITouchPhaseBegan];

            [btnThree addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];

            [cell.contentView addSubview:btnThree];

            

         }

        

         else if ([BookArray count]%3==1)

               

         {

            //btn one

            btnOne = [[UIButton alloc]initWithFrame:CGRectMake(20, 20, 80, 60)];

            btnOne.tag=[BookArray count]-1;

             [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:

                               [BookArray objectAtIndex:[BookArray count]-1],rownum-1]]

                               forState:UITouchPhaseBegan];

            [btnOne addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];

            [cell.contentView addSubview:btnOne];

    

        }

         

         else if ([BookArray count]%3==2)

             

        {

             //btn one

             btnOne = [[UIButton alloc]initWithFrame:CGRectMake(20, 20, 80, 60)];

             [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:

                            [BookArray objectAtIndex:[BookArray count]-2],rownum-1]]

                               forState:UITouchPhaseBegan];

             btnOne.tag=[BookArray count]-1;

             [btnOne addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];

             [cell.contentView addSubview:btnOne];

             

             //btn two

             btntwo = [[UIButton alloc]initWithFrame:CGRectMake(120, 20, 80, 60)];

             [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:

                                [BookArray objectAtIndex:[BookArray count]-1],rownum-1]]

                               forState:UITouchPhaseBegan];

             btntwo.tag =([BookArray count]-1)+1;

             [btnOne addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];

             [cell.contentView addSubview:btntwo];

         

         }

    

    }

    return cell;

    

}


#pragma mark  ---

//点击book后执行事件


-(void)btn:(id)sender

{


    cellview = (UIButton *)sender;

    int i=cellview.tag;

    NSLog(@"%d",cellview.tag);

[BookArray removeObjectAtIndex:i];

 [self.BookTableview reloadData];

   

    

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}






@end


加载中
0
Padding
Padding
我不知道还是不是初学者,但是你应该不知道tableviewcell的复用问题
返回顶部
顶部