UITableView にカスタムセルがあります。このカスタム セルには、ラベルとテキスト ボックスがあります。ユーザーがデータ (4 ~ 5 フィールド) を入力し、[保存] ボタンをクリックしたとき。彼が入力したデータを保存したい。
どうやってやるの??
最大で約5〜6個のフィールドがあります。これをどのように行うことができるかについて、いくつかの例を挙げていただければ幸いです。
1つの方法:データを辞書に保存します。
あなたのコメントに従って編集してください:
このような場合、Appleはを使用することをお勧めしますDelegate-Pattern
。基本的に、あなたがすることはこれです:
@protocol FirstDataVCDelegate;
@interface FirstDataVC : UIViewController
@property (weak, nonatomic) id<FirstDataVCDelegate> delegate;
//...
@end
@protocol FirstDataVCDelegate <NSObject>
- (void)firstDataVC:(FirstDataVC *)dataVC didCollectData:(NSDictionary *)data;
@end
@interface RootVC: UIViewController<FirstDataVCDelegate>
//...
@end
@implementation RootVC
- (void)firstDataVC:(FirstDataVC *)dataVC didCollectData:(NSDictionary *)data
{
NSString *name = [data valueForKey:@"name"];
[self.completeData setValue:name forKey:@"name"];
}
@end
この場合RootVC
、データ全体を送信したいVCになります。FirstDataVC
ユーザーがデータを入力するVCの1つです。
ユーザー入力を取得するすべてのVCは、RootVC
実装するプロトコルを提供する必要があります。
委任についてもう少し説明します。
保存ボタンをクリックすると、入力するデータのデータ構造を作成できます。これらの値をデータ構造に設定します また、NSMutableDictionary
キー値ストレージを使用することもできます
例: 4 つUITextFeilds
の textFeild1、textFeild2、textFeild3、textFeild14 があるとします。
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic addObject: textFeild1.text forValue: @"val1"];
[dic addObject: textFeild2.text forValue: @"val2"];
[dic addObject: textFeild3.text forValue: @"val3"];
[dic addObject: textFeild4.text forValue: @"val4"];
//Now you have the values and can retrieve them by:
NSString *value1 = [dic valueForKey:@"val1"];
データをテーブルビューに戻そうとしていますか? その場合、情報をデータ構造に保存してから、定義されたプロトコルを使用して渡す必要があります。
以下のコードで試してください:
- (UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.tabTeamDetails dequeueReusableCellWithIdentifier:@"customcellIdentifier"];
get UItextfeild and assign tag as below
textbox.tag = indexpath.row; //used to refer particular textfiled
}
保存ボタン アクション:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
//for(i=0;i<noofrowsintableview;i++){
NSString *text = (NSString *)[self.view viewWithTag:i];
[dic addObject:[NSString stringWithFormat:text] forValue: i];
}