2012-04-03 7 views
0

У меня есть этот код:Как изменить текст TextField с другой точки зрения

ViewController .h 

@property IBOutlet UITextField *field; 

ViewController .m 

@synthesize field; 

ViewControllerTwo .h 

#import "ViewController.h" 
{ 
ViewController *ViewCont; 
} 
-(IBAction)changeTextField 

ViewControllerTwo .m 

#import "ViewController.h" 

-(IBAction)changeTextField{ 
    viewCont.field.text = @"hello"; 
} 

Проблема заключается в том, что она не работает, хотя он не дает мне какие-либо ошибки. Кто-нибудь знает, что я делаю неправильно?

ответ

1

Никогда не изменяйте виды просмотра другого вида. Вы сталкиваетесь с одной из многих проблем, связанных с этим. В вашем случае вероятной причиной является то, что другой контроллер представления еще не загрузил свой вид, поэтому все IBOutlets все еще ноль.

Вы нарушаете MVC, и это вызовет массу мелких проблем, подобных этому. Вместо того, чтобы ViewControllerTwo изменить выходы ViewController, вы должны переместить данные (@"hello") в объект модели, который совместно используется обоими контроллерами представлений. ViewControllerTwo напишет ему, и ViewController будет читать от него. Вы можете поделиться этим объектом модели, передав его контроллерам представления в качестве свойства или сделав модель синглом.

+0

OK. Ваш ответ потрясающий! – adr

0

Вы не создаете экземпляр класса ViewController класса, поэтому по существу вы отправляете сообщение в нуль.

+0

Так как я создаю экземпляр TextField? – adr

+0

Вы не создаете экземпляр TextField, вы создаете экземпляр класса как this 'viewCont = [[ViewController alloc] initWithNibName: @" ViewController "bundle: [NSBundle mainBundle]]' – CodaFi