0

i am trying to do login application form where user can signUP and SignIN.i successfully done saving data into coreData.in signIN page user has to enter username password.i have a button signIN.when click on signIN button after entering username and password,user enables to navigate to his welcome page with his details.i wrote code for login and navigating to welcome page it is working fine.but when navigating to welcome page i am getting blank labels without user details.this is my code

- (IBAction)sginin:(id)sender {
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Userdetails"];
self.userData= [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

UserDetailViewController *userdetals = [[UserDetailViewController alloc] init];

[userdetals.usersDataArray setArray:_userData];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(userName == %@) AND (passWord == %@)", self.userNameField.text, self.userPasswordField.text];

[fetchRequest setPredicate:predicate];

self.userdata = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];


if ([_userdata count] > 0)
{
    UserDetailViewController  *userDetailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"userpage"];
    [self.navigationController pushViewController:userDetailViewController animated:YES];
    NSLog(@"login success");
}                                                                                               

i am doing this in welcome page to display user details

  -(void)viewDidAppear:(BOOL)animated{

  [_userFirstName     setText:[_usersDataArray        valueForKey:@"firstName"]];
  [_userLastName      setText:[_usersDataArray        valueForKey:@"lastName"]];
  [_userNameLable     setText:[_usersDataArray        valueForKey:@"userName"]];
  [_password          setText:[_usersDataArray        valueForKey:@"passWord"]];
  [_userAdress        setText:[_usersDataArray        valueForKey:@"adress"]];
  [_userPhone         setText:[_usersDataArray        valueForKey:@"contactNumber"]];
  [_userEmailLable    setText:[_usersDataArray        valueForKey:@"emailAdress"]];

  [self.view setNeedsDisplay];

} but welcome page is coming with blank details. where i am doing mistake.somebody help me.

  • Please search for similar questions. Your question has already a couple of duplicates. Basically, your source view controller will set a property of the *destination* view controller which represents the data to be displayed. – CouchDeveloper Nov 30 '13 at 09:02

2 Answers2

0

You can use this on prepareforsegue

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([segue.destinationViewController respondsToSelector:@selector(setDetail:)]) {
            [segue.destinationViewController performSelector:@selector(setDetail:) withObject:goalDetail];
    }

If there is no corresponding method available on the destination viewcontroller respondsToSelector will be false and so performSelector won't get executed. You can make sure your set method is working that way.

0

This is a common mistake most of the beginners make. Your UserDetailViewController is in storyboard right?. Then why you are creating view controller using alloc?

UserDetailViewController *userdetals = [[UserDetailViewController alloc] init]; // not required

[userdetals.usersDataArray setArray:_userData]; // setting the usersDataArray on the above created instance

Later you are instantiating from the storyboard again become a different instance and second one missing the usersDataArray.

 UserDetailViewController  *userDetailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"userpage"]; // why you not setting array for this?
    [self.navigationController pushViewController:userDetailViewController animated:YES];

Finally come to the solution . This is all you need

 UserDetailViewController  *userDetailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"userpage"]; 
[userDetailViewController.usersDataArray setArray:_userData];
        [self.navigationController pushViewController:userDetailViewController animated:YES];
Anil Varghese
  • 42,757
  • 9
  • 93
  • 110