将数据传递给下一个视图控制器

时间:2016-02-28 17:34:43

标签: ios objective-c

我正在尝试将用户登录emial传递给其他视图控制器。它从UITextField到UILabel,但是当我登录用户时它显示为null。我希望它在UILabel字段中显示电子邮件名称。有帮助吗?这是我的档案。

vc1.h

 #import <UIKit/UIKit.h>

@interface loginUserViewController : UIViewController


@property (nonatomic, strong) IBOutlet UITextField *email;
@property (nonatomic, retain) IBOutlet UITextField *password;
@property (nonatomic, retain) IBOutlet UIButton *login;
@property (nonatomic,retain) IBOutlet UIButton *registerBtn;


-(IBAction)loginUser:(id)sender;





@end

vc2.h

#import <UIKit/UIKit.h>
#import "loginUserViewController.h"


@interface Home : UIViewController

@property (weak, nonatomic) IBOutlet NSString *getEmail;
@property (weak, nonatomic) IBOutlet UILabel *username;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *Nav;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *logout;


-(IBAction)logout:(id)sender;

-(IBAction)bandHome:(id)sender;

@end

vc2.m

import "Home.h"
#import "loginUserViewController.h"


@interface Home ()

@end

@implementation Home
@synthesize getEmail,username, band1, band2, band3;

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if(self){

    }
    return self;
}

-(void)viewDidLoad
{
    [super viewDidLoad];
   // loginUserViewController *object = [[loginUserViewController alloc]init];
 //   NSString *string = [[NSString alloc] initWithFormat:@"%@", object.email.text];

    username.text = getEmail;
}

vc1.m

#import "loginUserViewController.h"
#import "Home.h"
#import "createBandViewController.h"

@interface loginUserViewController ()


@end

@implementation loginUserViewController

@synthesize email, password;
- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

}
- (void)viewDidload
{
    [super viewDidLoad];

}


-(IBAction)loginUser:(id)sender {
    if ([email.text isEqualToString:@""] || [password.text isEqualToString:@""])

    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Please Fill all the field" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        return;

    }


    NSMutableString *strURL = [[NSMutableString alloc] initWithFormat:@"Pretend reference/login2.php?email=%@&password=%@", email.text, password.text ];

    [strURL setString:[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

    NSMutableString *strResult = [[NSMutableString alloc] initWithData:dataURL  encoding:NSUTF8StringEncoding];

   NSLog(@"logging in");

    if ([strResult isEqualToString:@"1"])
    {
        NSLog(@"Logged in!");
        [self performSegueWithIdentifier:@"login" sender:self];
        Home *VC;

        VC = [self.storyboard instantiateViewControllerWithIdentifier:@"Home"];
        [self.navigationController pushViewController:VC animated:YES];
        VC.getEmail = self.email.text;
    }else
    {
        // invalid information
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Invalide Information" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
        return;

    }
    //email.text = @"";
    password.text = @"";

}
-(void)WillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

// Dismisses keyboard by clicking out and hitting return key.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    [self.view endEditing:YES];
}
-(BOOL)textFieldShouldReturn:(UITextField *) textField {
    [textField resignFirstResponder];
    return YES;
}
@end

1 个答案:

答案 0 :(得分:-1)

vc2.h

@property (weak, nonatomic) IBOutlet NSString *getEmail;

vc2.m

    @synthesize getEmail;
    -(void)viewDidLoad
    {
        [super viewDidLoad];
        username.text = getEmail;
    }

vc1.m

    -(IBAction)loginUser:(id)sender {


        if ([email.text isEqualToString:@""] || [password.text isEqualToString:@""])

            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Please Fill all the field" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];
                return;
            }
       else
           {
                vc2 *VC;

                VC = [self.storyboard instantiateViewControllerWithIdentifier:@"vc2Identifier"];
               [self.navigationController pushViewController:VC animated:YES];
                VC.getEmail = self.email.text
           }

    }

您不需要在必须获取数据的地方分配和初始化视图控制器,但您必须将数据从vc1传递到vc2并在vc1中使用vc2的变量,以及你正在做的是使用vc2中的vc1值。并且您正在分配LoginViewController,并且在viewDidUnload方法中,您已将电子邮件文本字段设置为nil。这就是你在vc2中获得零值的原因