0

行が選択されたときにボタンを追加し、行が2回タップされたときにボタンを削除しようとしていますが、UITableViewカスタムは必要ありませんUITableViewCell

任意の提案やサンプルコードをいただければ幸いです。

私が試したコード:cellForRowAtIndexPath メソッド内

if(cell.selected == YES){

                UITextField* numOfBottles =[[UITextField alloc] initWithFrame:CGRectMake(240,9.0f,50, 25)];
                numOfBottles.tag = indexPath.row;

                [numOfBottles setBorderStyle:UITextBorderStyleNone];
                [numOfBottles setBackgroundColor:[UIColor clearColor]];
                [numOfBottles setTextColor:[UIColor whiteColor]];
                [numOfBottles setTextAlignment:UITextAlignmentLeft];
                [numOfBottles setBackground:[UIImage imageNamed:@"blue_dropdown_normal.png"]];
                [numOfBottles setFont:[UIFont systemFontOfSize:16.0f]];
                [numOfBottles setDelegate:self];

                NSString* quantity = [[NSString alloc] initWithString:[subtotalObj.qtyArray objectAtIndex:(indexPath.row - 1)]];

                [numOfBottles setText:quantity];
                [numOfBottles setTextAlignment:UITextAlignmentCenter];
                [numOfBottles setBackgroundColor:[UIColor whiteColor]];
                numOfBottles.keyboardType = UIKeyboardTypeDefault;
               // numOfBottles.tag = indexPath.row;
                [cell.contentView addSubview:numOfBottles];
                [numOfBottles release];
            }

およびdidSelectRowAtIndexPathメソッドで

[tableView reloadData];

ただし、ボタン(背景画像付きのテキストフィールド)はレンダリングされません。

4

3 に答える 3

0

最善の方法は、UITableViewCellサブクラスを使用することだと思います。ただし、別の質問に対する私の回答を使用して、TableViewを再レンダリングし、セルにボタンを配置することができます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    if(indexPath.row == selectedRow){ // if your criteria where met
      //add your button
    }

     return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //do your select things here
  selectedRow = indexPath.row; //where selectedRow is a class variable
  [self.tableView reloadData]; // rerenders the tableview

}
于 2012-10-18T11:17:47.587 に答える
0

UITableViewデリゲートがあり、- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPathそれを実装します。ここで、ユーザーがタップした行を取得し、 andを使用して渡す必要がある現在のcell使用を取得します。今、あなたが欲しいものがあるかどうかを確認しますか?はいの場合、elseを実行します。すでにsを入力している場合は、それらを区別するためのタグを付けることができます。cellForRowAtIndexPath:NSIndexPathsectionrowcell.contentView subviewsUIButtonremoveFromSuperViewaddSubViewcellUIButtonunique

于 2012-10-18T11:21:23.187 に答える
0

これらのデリゲートを使用する

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  UITableViewCell *cell = (UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
  //Create reference of button with tag 999
  cell.contentView addSubView:yourButtonReference]
  [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = (UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    UIButton *btnAdded = (UIButton *)[cell viewWithTag:999];
    if(btnAdded){
      [btnAdded removeFromSuperView];
      [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
    }
}
于 2012-10-18T11:31:49.330 に答える