-1

I'm having trouble in create a NSArray class Method with Text Fields strings to use in another views controllers classes.

Let me show you what i have done:

First,in settings view controller, i'm collecting information in 3 text fields and saving with NSUserdefaults:

- (void)viewDidLoad
{
    // Get the stored data before the view loads
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSString *toEmail = [defaults objectForKey:@"toEmail"];
    NSString *ccEmail = [defaults objectForKey:@"ccEmail"];
    NSString *bccEmail = [defaults objectForKey:@"bccEmail"];

    // Update the UI elements with the saved data
    self.toEmailTextField.text = toEmail;
    self.ccEmailTextField.text = ccEmail;
    self.bccEmailTextField.text = bccEmail;

    [super viewDidLoad];

    [self sideBarButton];

    [self dismissTextFields];

}


- (IBAction)toEmailAction:(id)sender {

    NSString *toEmail = self.toEmailTextField.text;

    // Store the data
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:toEmail forKey:@"toEmail"];

    [defaults synchronize];

    NSLog(@"Data saved");


}
- (IBAction)ccEmailAction:(id)sender {

    NSString *ccEmail = self.ccEmailTextField.text;

    // Store the data
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:ccEmail forKey:@"ccEmail"];

    [defaults synchronize];

    NSLog(@"Data saved");
}
- (IBAction)bccEmailAction:(id)sender {

    NSString *bccEmail = self.bccEmailTextField.text;

    // Store the data
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:bccEmail forKey:@"bccEmail"];

    [defaults synchronize];

    NSLog(@"Data saved");
}

Second I have another view controller with email API where I need to use the strings save with NSUserdefault in the settings view controller.(marked as text 1, text 2, and text 3)

#pragma mark - Email

- (IBAction)showEmail:(id)sender {

    // Email Subject
    NSString *emailTitle = @"GliLog Email";
    // Email Content
    NSString *messageBody = @"GliLog Email Test!!!";
    // To address
    NSArray *toRecipent = [NSArray arrayWithObject:@"text 1"];
    NSArray *ccRecipient = [NSArray arrayWithObject:@"text 2"];
    NSArray *bccRecipient = [NSArray arrayWithObject:@"text 3"];

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:emailTitle];
    [mc setMessageBody:messageBody isHTML:NO];
    [mc setToRecipients:toRecipent];
    [mc setCcRecipients:ccRecipient];
    [mc setBccRecipients:bccRecipient];

    // Present mail view controller on screen
    [self presentViewController:mc animated:YES completion:NULL];

}

- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            NSLog(@"Mail cancelled");
            break;
        case MFMailComposeResultSaved:
            NSLog(@"Mail saved");
            break;
        case MFMailComposeResultSent:
            NSLog(@"Mail sent");
            break;
        case MFMailComposeResultFailed:
            NSLog(@"Mail sent failure: %@", [error localizedDescription]);
            break;
        default:
            break;
    }

    // Close the Mail Interface
    [self dismissViewControllerAnimated:YES completion:NULL];
}

How can i "pass" the strings from settings view controller to another view.

Best regards

pedro0172
  • 3
  • 3

2 Answers2

0

if you are storing the data in the NSUserDefaults, just get the value from it.

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 NSString * toEmail = [defaults objectForKey:@"toEmail"];
 NSString * ccEmail = [defaults objectForKey:@"ccEmail"];

A nice and simple tutorial about NSUserDefaults

DaSilva
  • 1,358
  • 1
  • 19
  • 42
0

You already have the answer in your first view, when reading the NSUserDefaults and storing to the strings:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *toEmail = [defaults objectForKey:@"toEmail"];
NSString *ccEmail = [defaults objectForKey:@"ccEmail"];
NSString *bccEmail = [defaults objectForKey:@"bccEmail"];

Just apply the same thing in second view controller,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSArray *toRecipent = [NSArray arrayWithObject:[defaults objectForKey:@"toEmail"]];
NSArray *ccRecipient = [NSArray arrayWithObject:[defaults objectForKey:@"ccEmail"]];
NSArray *bccRecipient = [NSArray arrayWithObject:[defaults objectForKey:@"bccEmail"]];
Rick
  • 1,818
  • 1
  • 15
  • 18