1

iOS の開発を始めたばかりで、最初はメジャー コンバーターを作成するのが楽しいと思いました。

ストーリーボードを使用して、セグエ付きのテーブルビュー、テキストフィールド付きのカスタムセル、およびさまざまな次元に対応するラベルを作成することができましたが、今は立ち往生しており、読んでいたチュートリアルや本で答えを見つけることができません.

各セルには、指定された寸法 (メートル、センチメートルなど) に対応するテキストフィールドがあります。特定の行のテキストフィールドの編集が終了したというイベントを取得し、計算後に他のテキストフィールドを変更するにはどうすればよいですか? (セルは、計算に必要な次元名と値を含む配列から作成されます)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UILabel *label;
    UITextField *field;
    static NSString *CellIdentifier = @"DimensionCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    label = (UILabel *)[cell viewWithTag:1];
    field = (UITextField *)[cell viewWithTag:2];
    field.delegate = self;
    NSString *DimensionLabel = [self.dimension objectAtIndex:indexPath.row];
    label.text = DimensionLabel;
    return cell;
}
4

2 に答える 2

3

tableView を提示する viewController として UITextField のデリゲートを設定する必要があります。

各 textField タグを指定するか、textFieldDidEndEditing:デリゲートで textField のポイントをチェックして、textField を識別するための indexPath を見つけることができます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier
                                                            forIndexPath:indexPath];

    cell.customTextField.delegate = self;
    //You can use tag if there is only one section
    //If there is more than one section then this will be ambiguos
    cell.customTextField.tag = indexPath.row;

    //Set other values

    return cell;
}

- (void)textFieldDidEndEditing:(UITextField *)textField{

    CGPoint textFieldOrigin = [textField convertPoint:textField.frame.origin toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:textFieldOrigin];
    //Now you can use indexPath for updating your dataSource 

}
于 2013-06-15T15:13:50.627 に答える