2016-08-31 6 views
2

私は税関セルを持つテーブルビューを持っています。各セルには2つのテキストフィールドがあります。表の下にはボタンがあります。私は、テーブルビューコントローラで "buttonPressed"アクションを持っています。このメソッドで各テーブル行のテキストフィールド値を取得するにはどうすればよいですか?ここでObjective-C:各テーブル行のテキストフィールド値を取得

はカスタムセルのヘッダファイルです:

... 

@interface CustomCell : UITableViewCell 
@property (weak, nonatomic) IBOutlet UITextField *name; 
@property (weak, nonatomic) IBOutlet UITextField *age; 

@end 

そして、私はこの方法を持っているテーブルビューコントローラに:

- (IBAction)saveBtnPressed:(id)sender{ 
    // Store the text field values of each row in an array here 
} 

誰かが私を助けることができますか?

+0

あなたは、テーブルビューセルからボタンをクリックしたときにTextFieldを見せたいですか? – user3182143

+0

これは表示されず、ユーザーは各フィールドにテキストを追加する必要があります。また、ボタンをクリックすると、テキストが配列に格納されます。 – Nono

答えて

5

iosデザインパターンによると、カスタムセルの代理人に配列されたテキストフィールドの値を格納する必要があります。しかし、あなたの例では、テキストフィールドの値をすべて同じ場所にしたい場合は、以下のように解決します。 saveBtnPressedアクションが(Customcellではなく)viewControllerにあると仮定します。 5行があると仮定します。

- (IBAction)saveBtnPressed:(id)sender{ 

     NSMutableArray *userDetails = [[NSMutableArray alloc] init]; 
     for(i=0;i<5;i++){ 
      CustomCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; 
      NSDictionary *userDictionary = [[NSDictionary alloc] initWithObjectsAndKeys: cell.name.text, @"name", cell.age.text, @"age", nil]; 
      [userDetails addObject:userDictionary]; 
     } 
} 

userDetailsArrayにはすべてのセルの詳細が含まれます。手順以下

+0

これは表示されている行/セルに対してのみ有効です –

+0

同じセルがデキューされ、次の値を表示するために再利用されるため、見えないUIControlとその値が解放されます。あなたは目に見える細胞の価値しか得られません。 – sschunara

0

試してみてください。両方のTextFieldにcellForRowAtIndexPath

設定タグ。

ループスルーdataSource配列数は、行数と同じです。

タグを使用してテキストフィールドを取得し、辞書の配列にテキストを保存し、ループ内のセルを取得します:

- (IBAction)OnsaveCilck:(id)sender{ 

    NSMutableArray *Array = [NSMutableArray array]; 

    for (int i=0; i < YourDataSourceArray.Count; i++){ 

     NSIndexPath *indexPath = [NSIndexPath indexPathForRow: i inSection: 0]; 

     CustomCell *cell = [tableview cellForRowAtIndexPath:indexPath]; 

     NSMutableDictionary *Dict = [NSMutableDictionary dictionary]; 

     UITextField *TextName= (UITextField*)[cell.contentView viewWithTag:100];//tag given cellForRowAtIndexPath 
     UITextField *TextAge= (UITextField*)[cell.contentView viewWithTag:200];//tag given cellForRowAtIndexPath 

     [Dict setObject:TextName.text forKey:@"name"]; 
     [Dict setObject:TextAge.text forKey:@"age"]; 

     [Array addObject:TempDict]; 

    } 

    //Final array contains all data 

    NSLog(@"array == %@",Array); 
} 
関連する問題