2012-04-19 13 views
1

3つのセクションを含むグループ化されたテーブルビューがあります。各セクションに異なるボタンを追加したい、最初のセクションに5つのセルがあり、2番目のセクションに3つのボタンを追加したい、 3r第4のcell.myコードは次のようになります。UItableviewセルにUIButtonを追加する

- (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

答えて

2

あなたはこのように試すことができます:

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

作品を作品ひよこましょう。 – stackiphone

+0

:)助けて幸せperfectt – Alok

1

まず、これは非常に簡単です:

は、あなたのプロジェクトへの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

0
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]; 
} 
} 
関連する問題