2016-02-28 126 views
-1

我试着将用户登录emial传递给其他视图控制器。它从UITextField到UILabel,但在登录用户时显示为空。我希望它在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 
+0

获得零值这里查看我的回答 http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers/25612143#25612143 –

回答

-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 
      } 

    } 

你并不需要的alloc和init,你必须获取数据的视图控制器,但你必须将数据从vc1传递到vc2,并在vc1中使用vc2的变量,并且您在vc2中使用vc1值。并且您正在分配LoginViewController,并且在viewDidUnload方法中,您已将电子邮件文本字段设置为零。这就是为什么你在VC2

+0

不要只交码。解释什么是错误的,并解释你的答案如何解决问题。 – rmaddy

+0

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

+0

更新您的答案并提供详细信息,请勿将详细信息置于评论中。 – rmaddy

相关问题