2013-12-10 43 views
0

我試圖將用戶從AuthenticationViewController生成的文本發送到MainProfileViewController。我沒有收到錯誤報告。該標籤甚至不出現在MainProfileViewController中。插座正確連接。謝謝您的幫助!不正確地在視圖之間傳遞數據

#import <UIKit/UIKit.h> 

    @class MainProfileViewController; 

    @interface AuthenticationViewController : UIViewController 

    { 
     MainProfileViewController *mainProfileViewController; 
    } 

    @property (retain, nonatomic) IBOutlet UITextField *usernameTextField; 

    @end 



    #import "AuthenticationViewController.h" 
    #import "MainProfileViewController.h" 

    @interface AuthenticationViewController() 

    @end 

    @implementation AuthenticationViewController 

    @synthesize usernameTextField; 

    - (IBAction)createAccount: (id)sender { 
      { 
       mainProfileViewController = [[MainProfileViewController alloc] init]; 
       mainProfileViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
       mainProfileViewController.userText.text = usernameTextField.text; 
       [self presentViewController:mainProfileViewController animated:YES completion:nil]; 
       } 
    } 

    @end 



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

    @interface MainProfileViewController : UIViewController 

    { 
     UITextField *userText; 
    } 

    @property (retain, nonatomic) IBOutlet UILabel *resultLabel; 
    @property (retain, nonatomic) IBOutlet UITextField *userText; 
    @property (retain, nonatomic) NSString *textPass; 

    @end 




    #import "MainProfileViewController.h" 
    #import "AuthenticationViewController.h" 

    @interface MainProfileViewController() 

    @end 

    @implementation MainProfileViewController 
    @synthesize resultLabel, userText, textPass; 

    - (void)viewDidLoad 
{ 

    userText.text = textPass; 
    [super viewDidLoad]; 

} 
    @end 
+0

你必須通過串 –

回答

1

確定連接正確的視圖控制器類視圖控制器,還有就是你做錯了一些事情。 首先,你正在實例化一個本地MainProfileViewController而不是實例化你有一個伊娃指向的那個。

你做錯的第二件事是試圖將AuthenticationViewController的視圖發送到MainProfileViewController。你不應該那樣做。相反,傳遞文本本身;否則你只是覆蓋指針,並沒有什麼會顯示出來。

- (IBAction)createAccount: (id)sender { 
    // DON'T CREATE A LOCAL VARIABLE 
    // MainProfileViewController *controller = [[MainProfileViewController alloc] initWithNibName:@"MainProfileViewController" bundle:nil]; 
    mainProfileViewController = [[MainProfileViewController alloc] initWithNibName:@"MainProfileViewController" bundle:nil]; 
    mainProfileViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 

    // DON'T TRY SENDING THE VIEW OVER 
    // mainProfileViewController.userText = usernameTextField; 
    mainProfileViewController.userText.text = usernameTextField.text; 
    [self presentViewController:mainProfileViewController animated:YES completion:nil]; 
} 

編輯:我想這是不要求你有伊娃到要出現新的視圖控制器......但問題是,你不能實例化一個,然後設置一個你的參數沒有實例化(它將爲零)。

+0

謝謝!這有助於清理代碼。該標籤現在出現,但它不會改變用戶在usernameTextField中輸入的內容。問題? – user2605157

+0

你是如何清理代碼的?你有什麼改變?您是否在任何-init,-viewDidLoad或MainProfileViewController的其他方法中設置了任何內容?當你NSLog(@「%@」,usernameTextField.text); ? – cjwirth

+0

我將代碼編輯添加到主帖子中。 – user2605157

1

檢查您的故事板,看看您是否正確連接了插座。 在視圖控制器中應該有一個IBOutlet對象,您應該在故事板中進行連接。

還要檢查,如果你在故事板

1
#import <UIKit/UIKit.h> 

@class MainProfileViewController; 

@interface AuthenticationViewController : UIViewController 

{ 
    MainProfileViewController *mainProfileViewController; 
} 

@property (retain, nonatomic) IBOutlet UITextField *usernameTextField; 

@end 



#import "AuthenticationViewController.h" 
#import "MainProfileViewController.h" 

@interface AuthenticationViewController() 

@end 

@implementation AuthenticationViewController 

@synthesize usernameTextField; 

- (IBAction)createAccount: (id)sender { 
     { 
       MainProfileViewController *controller = [[MainProfileViewController alloc] initWithNibName:@"MainProfileViewController" bundle:nil]; 
       controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 

       mainProfileViewController.textpass = usernameTextField.text; 

       [self presentViewController:controller animated:YES completion:nil]; 
      } 
} 

@end 



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

@interface MainProfileViewController : UIViewController 

{ 
    UITextField *userText; 
} 

@property (retain, nonatomic) IBOutlet UILabel *resultLabel; 
@property (retain, nonatomic) IBOutlet UITextField *userText; 
@property (retain, nonatomic) NSString *textpass; 
@end 




#import "MainProfileViewController.h" 
#import "AuthenticationViewController.h" 

@interface MainProfileViewController() 

@end 

@implementation MainProfileViewController 
@synthesize resultLabel, userText; 
- (void)viewDidLoad { 
    usertext.text=textpass; 
} 
@end 
+0

所以,現在出現的標籤,但它不會改變的用戶列出的文本。問題? – user2605157

1

你需要改變這部分代碼...

- (IBAction)createAccount: (id)sender 
    { 
     mainProfileViewController = [[MainProfileViewController alloc] init]; 
     mainProfileViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     mainProfileViewController.userText.text = usernameTextField.text; 
     [self presentViewController:mainProfileViewController animated:YES completion:nil]; 
    } 

編碼快樂......

+0

這有助於清理代碼。標籤現在出現,但不會更改爲用戶輸入的內容。問題? – user2605157