ITEEDU

iPhone书架tableView中添加控件及控件布局和tag计算设计

/*********************************************************************************
 函数:-(UITableViewCell *)tableView: cellForRowAtIndexPath:
 功能: 在tableview的单元中添加控件,并完成其布局和tag计数
 参数: (id)sender
 返回值:(UITableView *)tableView (NSIndexPath *)indexPath
 **********************************************************************************/ 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
   static NSString *cellTableIdentifier = @"CellTableIdentifier";
    //NSLog(@"%d",screenNum);
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellTableIdentifier];
    if(cell == nil)
    {
        CGRect cellFrame = CGRectMake(0, 0, 80, 115);
        cell = [[[UITableViewCell alloc] initWithFrame:cellFrame reuseIdentifier:cellTableIdentifier] autorelease];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        UIImageView *tableCellBg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"shelf_panel.png"]]; 
        tableCellBg.frame = CGRectMake(0, 0, 320, 115);
        cell.backgroundView = tableCellBg;
        if(([listData count]%3 == 0) || ([listData count]%3!=0 && indexPath.row < rowNum-1))
        {
            UIButton *btnOne = [[[UIButton alloc] initWithFrame:CGRectMake(20, 20, 80, 60)] autorelease];
            //[btnOne setBackgroundImage:icon forState:UITouchPhaseBegan];
            //[btnOne setBackgroundImage:icon forState:UITouchPhaseEnded];
            [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:(3*indexPath.row)],indexPath.row]] forState:UITouchPhaseBegan];
            [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:(3*indexPath.row)],indexPath.row]] forState:UITouchPhaseEnded];
            btnOne.tag = 3*indexPath.row;
            [btnOne addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];
            //NSLog(@"this index tag=%d",btnOne.tag);
            [cell.contentView addSubview:btnOne];    
            
            
            UIButton *btnTwo = [[[UIButton alloc] initWithFrame:CGRectMake(120, 20, 80, 60)] autorelease];
            [btnTwo setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:(3*(indexPath.row)+1)],indexPath.row]] forState:UITouchPhaseBegan];
            [btnTwo setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:(3*(indexPath.row)+1)],indexPath.row]] forState:UITouchPhaseEnded];
            btnTwo.tag = 3*(indexPath.row)+1;
            
            [btnTwo addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];
            //NSLog(@"this index tag=%d",btnTwo.tag);
            
            [cell.contentView addSubview:btnTwo];  
            
            
            UIButton *btnThree = [[[UIButton alloc] initWithFrame:CGRectMake(220, 20, 80,60)] autorelease];
            [btnThree setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:(3*(indexPath.row)+2)],indexPath.row]] forState:UITouchPhaseBegan];
            [btnThree setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:(3*(indexPath.row)+2)],indexPath.row]] forState:UITouchPhaseEnded];
            btnThree.tag = 3*(indexPath.row)+2;
            [btnThree addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];
            //NSLog(@"this index tag=%d",btnThree.tag);
            
            [cell.contentView addSubview:btnThree];              
        }
        
        else if([listData count]%3 == 1)
        {
            UIButton *btnOne = [[[UIButton alloc] initWithFrame:CGRectMake(20, 20, 80, 60)] autorelease];
            //[btnOne setBackgroundImage:icon forState:UITouchPhaseBegan];
            //[btnOne setBackgroundImage:icon forState:UITouchPhaseEnded];
            [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:[listData count]-1],rowNum-1]] forState:UITouchPhaseBegan];
            [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:[listData count]-1],rowNum-1]] forState:UITouchPhaseEnded];
            btnOne.tag = 3*(rowNum-1);
            [btnOne addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];
            //NSLog(@"this index tag=%d",btnOne.tag);
            
            [cell.contentView addSubview:btnOne];    
            
        }
        else if([listData count]%3 == 2)
        {
            UIButton *btnOne = [[[UIButton alloc] initWithFrame:CGRectMake(20, 20, 80, 60)] autorelease];
            //[btnOne setBackgroundImage:icon forState:UITouchPhaseBegan];
            //[btnOne setBackgroundImage:icon forState:UITouchPhaseEnded];
            [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:[listData count]-2],rowNum-1]] forState:UITouchPhaseBegan];
            [btnOne setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:[listData count]-2],rowNum-1]] forState:UITouchPhaseEnded];
            btnOne.tag = 3*(rowNum-1);
            [btnOne addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];
            //NSLog(@"this index tag=%d",btnOne.tag);
            
            [cell.contentView addSubview:btnOne];  
            
            UIButton *btnTwo = [[[UIButton alloc] initWithFrame:CGRectMake(120, 20, 80, 60)] autorelease];
            [btnTwo setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:[listData count]-1],rowNum-1]] forState:UITouchPhaseBegan];
            [btnTwo setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:[listData objectAtIndex:[listData count]-1],rowNum-1]] forState:UITouchPhaseEnded];
            btnTwo.tag = 3*(rowNum-1)+1;
            [btnTwo addTarget:self action:@selector(btn:) forControlEvents:UITouchPhaseEnded];
            //NSLog(@"this index tag=%d",btnTwo.tag);
            
            [cell.contentView addSubview:btnTwo];  
            
        }
         
    }
  	return cell;
}


-(void)dealloc{
    [listData release];
    [theTableView release];
    [super dealloc];
}
@end