添加UIButton到UItableview单元

问题描述:

我有一个包含3个部分的分组tableview,我想为每个部分添加不同的按钮,我在第一部分中有5个单元格,并且我想在第二个部分中只添加3个解除按钮, 3R的第四cell.my代码看起来像这样添加UIButton到UItableview单元

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 3; 
} 


// Customize the number of rows in the table view. 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    if(section == 0) 
     return [_arayfirstrow count]; 
    else if(section == 1) 
     return [_arraysecondrow count]; 
    else if(section == 2) 
     return [_arraythirdrow count]; 
} 
    // Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 
    // static NSUInteger nTag = 100; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
     cell.textLabel.font = [UIFont fontWithName:@"Georgia"size:20.0]; 



    } 

    // Set up the cell... 
    if(indexPath.section == 0){ 
      cell.textLabel.text = [_arayfirstrow objectAtIndex:indexPath.row]; 
     NSString *imageName = [_arayfirstrowimg objectAtIndex:indexPath.row]; 
     cell.imageView.image = [UIImage imageNamed:imageName]; 

**//when i add below code for inserting button on the first section ,it successfully adds the button,but i don't need button for 1st and 5th cell..ans also it crashes when i tap the button for 2 or three time** 

    CGRect buttonRect = CGRectMake(210, 25, 65, 25); 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     button.frame = buttonRect; 
     // set the button title here if it will always be the same 
     [button setTitle:@"Action" forState:UIControlStateNormal]; 
     button.tag = 1; 
     [button addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside]; 

     [cell.contentView insertSubview:button atIndex:0]; 



     // [usernamebutton release]; 

    }else if(indexPath.section == 1){ 
     cell.textLabel.text = [_arraysecondrow objectAtIndex:indexPath.row]; 
    } 
    else if(indexPath.section == 2) 
    { 
     cell.textLabel.text = [_arraythirdrow objectAtIndex:indexPath.row]; 

    } 
    return cell; 
} 

有没有什么解决办法解决这个问题。 在此先感谢。

+0

如果您滚动你可能会得到不同的东西, – Bala 2012-04-19 14:53:06

你可以尝试这样的:

if(indexPath.section == 0) 
{ 
    if(indexPath.row == 1||indexPath.row == 2||indexPath.row == 3) 
    { 
     CGRect buttonRect = CGRectMake(210, 25, 65, 25); 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     button.frame = buttonRect; 
     // set the button title here if it will always be the same 
     [button setTitle:@"Action" forState:UIControlStateNormal]; 
     button.tag = 1; 
     [button addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [cell.contentView addSubView:button atIndex:0]; 
    } 
} 

有你定义的方法myAction:?否则,可能会导致应用程序崩溃。

+0

作品perfectt感谢 – stackiphone 2012-04-19 14:52:27

+0

:)乐意提供帮助。 – Alok 2012-04-19 14:56:04

首先,这是很容易的:

添加的UITableViewCell的子类到项目中,插入你的头,并添加细胞在你的委托方法如下所示:

static NSString *CellIdentifier = @"SpecialCell"; 
// static NSUInteger nTag = 100; 
YourTableViewCellClass *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (specialCell == nil) { 
    specialCell = [[[YourTableViewCellClass alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
} 

在新小区类添加按钮和意见,您

[self addSubview:button]; 

这是你的特殊的细胞,你的第二,第三和第四单元在第一部分中的细胞一样。

像你已经做的那样,按照上面的相同方式创建一个标准单元格。 现在,这里是魔法:

if(indexPath.section == 0){ 
    if(indexPath.row == 1||indexPath.row == 2||indexPath.row == 3){ 
     //add text to buttons of your specialCell 
     //add color... 
     return specialCell; 
    } else { 
     return cell; 
    } 
} 

只是一个小的概述,它是怎样来完成。 希望有所帮助。

+1

让我小妞它的工作原理 – stackiphone 2012-04-19 14:29:39

if(indexPath.section == 0) 
{ 
    if(indexPath.row == 1||indexPath.row == 2||indexPath.row == 3) 
    {  

UIButton *deletebtn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
      [deletebtn setFrame:CGRectMake(170,5, 25, 25)]; 
      deletebtn.tag=indexPath.row; 
      [deletebtn setImage:[UIImage imageNamed:@"log_delete_touch.png"] forState:UIControlStateNormal]; 
      [deletebtn addTarget:self action:@selector(DeleteRow:) forControlEvents:UIControlEventTouchUpInside]; 
      [cell addSubview:deletebtn]; 
} 
}