1

UITableView内部に aがあるアプリをコーディングしていUIViewControllerます。UITableViewはプロトタイプ セルを使用します。各セルの内部には がありますUITextField。ご想像のとおり、ビューはユーザーが入力するフォームです。

UITextFieldユーザーが UI のボタンをクリックすると、データをサーバーに送信できるように、表示されている各 からすべてのテキスト値が収集されるイベントが発生する必要があります。

UITextFieldテキスト値を取得できるように、セルのプロパティにアクセスできません。

私のコードの一部:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIDentifier = @"Cell";
    AddCardCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIDentifier forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[AddCardCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIDentifier];
    }

    cell.campoTextField.placeholder = [placeholders objectAtIndex:indexPath.row];
    cell.tituloLabel.text = [titulosCampos objectAtIndex:indexPath.row];

    return cell;
}

私のデータソースの設定:

titulosCampos = [NSArray arrayWithObjects: @"Nombre", @"Correo", nil];
placeholders = [NSArray arrayWithObjects: @"Oscar Swanros", @"dev@swanros.com", nil];
4

2 に答える 2

2

すべてのセルcampoTextFieldに保存されているテキストを取得してから、このコードを使用できます.....

NSMutableArray *titulosCampoTextArray = [[NSMutableArray alloc] init];
for (int i = 0; i < titulosCampos.count; i++) {

    AddCardCell *cell = (AddCardCell*)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
    [titulosCampoTextArray addObject:cell.campoTextField.text];
}
NSLog(@"Data in titulosCampoText array %@",titulosCampoTextArray);

これがあなたに役立つことを願っています.. :-)

于 2013-03-29T04:00:55.300 に答える
0

あなたAddCardCellがテキストフィールドのデリゲートであると仮定しています。これに対する最善のアプローチは、セル クラスで独自のデリゲート プロトコルを宣言することです。ビュー コントローラーは、セルのデリゲートになります。次に、セルはテキスト フィールドのデリゲート メソッドを実装して、テキストがいつ変更されたかを検出する必要があります。次に、セルはデリゲートに新しいテキストがあることを伝える必要があります。テキストは、デリゲート メソッドのパラメーターの 1 つにする必要があります。ビュー コントローラーは、このセル デリゲート メソッドを実装します。ビュー コントローラーは、更新されたテキストでデータ モデルを更新します。

ボタンがタップされると、すべてのセルのテキストが既にデータ モデルに含まれています。

于 2013-03-29T03:23:45.737 に答える