Reputation: 183
Storyboard ViewController SecondViewController
I'd like to pass data (aNumber, a variable NSString) in LabelNumber (in ViewController) from modal SecondViewController after entering numbers in TextFieldNumber using a decimal pad. I add a close button (bar button item) in the SecondViewController and connect to Segue (mySegue). In ViewController there's a Round Rect Button linked to SecondViewController Here's the code in ViewController.m
#import "ViewController.h"
#import "SecondViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *LabelNumber;
@property (weak, nonatomic) SecondViewController * SecondScreen;
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString: @"mySegue"]){
self.SecondScreen = segue.destinationViewController;
self.SecondScreen.aNumber = self.LabelNumber.text
}
- (IBAction)close:(UIStoryboardSegue*)sender {
if([sender.identifier isEqualToString:@"mySegue"] ){
self.LabelNumber.text = self.SecondViewController.aNumber;
}
In SecondViewController.h i've this code:
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController
@property (strong, nonatomic) NSString* aNumber;
@end
In SecondViewController.m i've this code:
#import "ViewController.h" #import "SecondViewController.h" @interface SecondViewController () <UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *TextFieldNumber; @end
- (void)viewDidLoad
{
[super viewDidLoad];
[self.TextFieldNumber becomeFirstResponder];
self.TextFieldNumber.delegate = self;
self.TextFieldNumber.text = self.aNumber;
}
- (IBAction)getValue:(UITextField *)sender {
self.aNumber = self.TextFieldNumber.text ;
[self.TextFieldNumber resignFirstResponder];
}
At last, i've added always in SecondViewController.m that, even if i don't want to close the keyboard but i want it to stay always ON and would like to catch the TextNumber value (aNumber) in close button (modal unwind).
-(BOOL) textFieldShouldReturn:(UITextField *)textField{ if (textField == self.TextFieldNumber) [self.TextFieldNumber resignFirstResponder]; return YES; }
Upvotes: 1
Views: 331
Reputation: 9857
If I understood the question correctly, you have two options:
[self.delegate secondViewControllerWillDismiss:value]
NSNotification
when dismiss. In this case you will have to write your parameter in a NSDictionary
to be passed along with the notification itself.If it's not clear I can write little example.
Upvotes: 1