2

カスタムtableViewCellを使用しているときに行を選択するかボタンをタップすると、他のコントロールの値を取得する方法に疑問があります。TextField、Slider、およびボタンを備えた TableView Cell があるとします。ボタンには次を使用したアクションがあります。

btn.tag = indexPath.row;
[btn addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];

これで、アクション メソッドのボタンを取得できます。ボタンのタップ時に textField の値とスライダーの値を取得する必要があります。

1 つのオプションは、配列を作成し、これら 2 つのコントロールの値をその配列に格納して、これを管理することです。しかし、これは正しい管理方法ではないと思います。

UITableViewCell のサブビューの値の値を取得する正しい方法に移動してください。

ありがとう

4

2 に答える 2

6

テキストフィールドとスライダーを作成するときに、それらに定数タグを付けてから、セルの contentView に追加します

textfield.tag= TEXTFIELDTAG; //TEXTFIELDTAG = 100 or any other constant
[cell.contentView addSubview:textfield];

そして、あなたのbuttonTapped:メソッドで

-(void)buttonTapped:(id)sender
{

    int row = ((UIButton*)sender).tag;
    NSIndexPath* indexpath = [NSIndexPath indexPathForRow:row inSection:0]; // in case this row in in your first section
    UITableViewCell* cell = [table cellForRowAtIndexPath:indexPath];
    UITextField* textfield = [cell.contentView viewWithTag:TEXTFIELDTAG];
}
于 2011-05-14T07:32:17.493 に答える
2

サブビュー (ボタン、テキスト フィールドなど) を作成するときはいつでも、それらにタグ付けUITableViewCellすることを忘れないでください。

myTextField.tag = 0;
myTextLabel.tag = 1; 
[cell addSubview:myTextField];
[cell addSubview:myTextLabel];

タグ付けしたら、以下の方法を使用してそれらにアクセスできます。

- (UIView *)viewWithTag:(NSInteger)tag

選択すると、のViewWithTag関数を使用して UITableViewCell のサブビューを取得できますUIView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [tableview cellForRowAtIndexPath:indexPath];
        UITextField* myTextField = [cell  viewWithTag:0];
        UILabel* myTextLabel     = [cell  viewWithTag:1];
    }
于 2011-05-14T07:28:21.490 に答える