2013-12-10 2 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 вместо создания экземпляра, на который указывает ivar.

Второе, что вы делаете неправильно, - это попытка переслать представление из 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]; 
    } 

Счастливый Coding ...

+0

Это помогло немного очистить код. Теперь появляется ярлык, но он не изменяется на то, что вводит пользователь. Проблема? – user2605157

Смежные вопросы