Как изменить текст textField из другого представления - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть этот код:

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

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

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

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

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

0 голосов
/ 03 апреля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...