1

3つのセクションを含むグループ化されたテーブルビューがあり、セクションごとに異なるボタンを追加したい、最初のセクションに5つのセルがあり、2番目、3r、4番目のセルにボタンを3つだけ追加したい。このような

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

これを解決するための解決策はありますか?前もって感謝します。

4

3 に答える 3

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:か?そうでない場合は、アプリケーションがクラッシュしている可能性があります。

于 2012-04-19T14:43:22.667 に答える
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];
}

新しい独自のCellクラスで、ボタンとビューを好きなように追加します。

[self addSubview:button];

これはあなたの特別なセルであり、最初のセクションの2番目、3番目、4番目のセルのセルです。

すでに行っているように、上記と同じ方法で標準セルを初期化します。今ここに魔法が来ます:

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;
    }
}

ほんの少しの概要、それがどのように行われるのか。お役に立てば幸いです。

于 2012-04-19T14:20:20.230 に答える
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];
}
}
于 2013-05-17T09:54:06.700 に答える