2016-10-27 8 views
0
-(void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    NSInteger field = textField.tag; 
    userDetailsDictionary= [[NSMutableDictionary alloc] init]; 
    if(field ==1) 
    { 
     NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
    [userDetailsDictionary setObject:textField.text forKey:@"FirstName"]; 

    } 
    if(field ==2) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"MiddleName"]; 


    } 

    if(field ==3) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"LastName"]; 
    } 

    if(field ==4) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"Country"]; 
    } 

    if(field ==5) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"State"]; 
    } 

    if(field ==6) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"City"]; 
    } 

    if(field ==7) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"DOB"]; 
    } 




} 



- (IBAction)saveAction:(UIBarButtonItem *)sender { 



    NSLog(@"the values stored in dictionary are %@",userDetailsDictionary); 

} 

上記のコードを確認してください。保存ボタンをクリックすると、カスタムセルのすべてのテキストフィールドにテキストを保存しようとしています。実際には、どうしてこんなことが起こっているのか教えてください。私はこれがもっと分かりやすく、理解できません。辞書にtextfield.textを保存するコードをチェックする

+1

呼び出し、これを[[NSMutableDictionaryのalloc]のinit];' 'viewDidLoad' –

+0

に私は理解していないがそれはコンテキストがありません。各UITextFieldは異なるセルにありますか?それはUITableView(またはUICollectionView)なので、 'ZzzView:cellForRowAtIndexPath:'のロジックが役に立ちます。 – Larme

答えて

0

userdetaildictionryにその原因は、各時間を割り当てられているviewdidload

userDetailsDictionary= [[NSMutableDictionary alloc] init]; 

に行うなど

- (void)viewDidLoad { 
[super viewDidLoad]; 
    userDetailsDictionary= [[NSMutableDictionary alloc] init]; 
} 


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


    if(textField.tag ==1) 
    { 
     NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
    [userDetailsDictionary setObject:textField.text forKey:@"FirstName"]; 

    } 
    if(textField.tag ==2) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"MiddleName"]; 


    } 

    if(textField.tag ==3) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"LastName"]; 
    } 

    if(textField.tag ==4) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"Country"]; 
    } 

    if(textField.tag ==5) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"State"]; 
    } 

    if(textField.tag ==6) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"City"]; 
    } 

    if(textField.tag ==7) 
    { 
      NSLog(@"cell1.userDetailTextField.text %@",textField.text); 
     [userDetailsDictionary setObject:textField.text forKey:@"DOB"]; 
    } 


} 
0

ためtextFieldDidEndEditingのデリゲートメソッドでこのuserDetailsDictionary= [[NSMutableDictionary alloc] init];を削除し、viewDidLoadに追加し、

フィニッシュ編集を呼び出します。

0

textFieldDidEndEditingが呼び出されるたびに辞書を初期化するからです。 initをviewDidLoadメソッドに移動します。

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    userDetailsDictionary= [[NSMutableDictionary alloc] init]; 
} 
1

他の人がすでに指摘したように、あなたはviewDidLoad方法であなたの辞書を初期化してからちょうどそのオブジェクトに値を設定する必要があります。また、strongプロパティとしてあなたのdictを宣言することを忘れないでください。

それは少し読みやすくなるように、私はあなたのコードを改善します: `userDetailsDictionary =で

@interface ViewController() 
@property (nonatomic, strong) NSMutableDictionary *userDetailsDictionary;  
@end 

@implementation ViewController  

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    _userDetailsDictionary= [[NSMutableDictionary alloc] init]; 
}  

-(void)textFieldDidEndEditing:(UITextField *)textField{ 
    NSLog(@"cell%ld.userDetailTextField.text %@", (long)textField.tag, textField.text); 
    switch (textField.tag) { 
     case 1: _userDetailsDictionary[@"FirstName"] = textField.text; break; 
     case 2: _userDetailsDictionary[@"MiddleName"] = textField.text; break; 
     case 3: _userDetailsDictionary[@"LastName"] = textField.text; break; 
     case 4: _userDetailsDictionary[@"Country"] = textField.text; break; 
     case 5: _userDetailsDictionary[@"State"] = textField.text; break; 
     case 6: _userDetailsDictionary[@"City"] = textField.text; break; 
     case 7: _userDetailsDictionary[@"DOB"] = textField.text; break; 
    } 
} 

@end 
関連する問題