2016-02-28 128 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

相關問題