0

行が初めて選択さUITextFieldれるたびにセルに追加しましたが、行が2回目に選択されたときにそのテキストフィールドを削除したいと思います。UITableView

提案やサンプルコードをいただければ幸いです。ありがとう!!

セルにテキスト フィールドを追加するためのコード: cellForAtIndexPathメソッド内

 if (indexPath.row == selectedRow)
            {

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

            }

didSelectedRowAtIndexPath

selectedRow = indexPath.row;
[mainTable reloadData];
4

3 に答える 3

1

これは、セルを埋めるために使用したモデルオブジェクトに整数変数を与えることで簡単に取得できます。この変数は、ユーザーがそのセルを選択するたびに 1 ずつ増加します。

次に、 – tableView:didDeselectRowAtIndexPath: メソッド (またはアプリで呼び出されます) で、次のようなものを作成できます。

if (selectedCellModel.selectCnt == 1) {
    //create the text field
} else if (selectedCellModel.selectCnt == 2) {
    //delete the text field
}
于 2012-10-19T10:21:21.770 に答える
0

独自の UITableViewCell サブクラスを作成することを強くお勧めします。このクラスにこの UITextView オブジェクトを追加し、メソッド- (void)setSelected:(BOOL)selected animated:(BOOL)animatedで textField を表示/非表示にします。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    [textField setHidden:!textField.hidden]; //this alternately show and hide textField
}
于 2012-10-19T10:38:40.100 に答える
0

なぜそれを非表示にしないのですか?

[yourTextField setHidden:YES];

または、textField が tableview セルのサブビューである場合は、それを削除します。

[yourTextField removeFromSuperview];
于 2012-10-19T10:18:50.847 に答える