2009-09-02 6 views
4

Я пытаюсь обновить поле имени пользователя для текстового поля. В настоящее время есть владелец места, в котором написано «Имя пользователя». Я загружаю имя пользователя из файла настроек, но для ясности я просто укажу его в имени пользователя.Текстовое поле UITextField не установлено

- (void)viewDidLoad { 
    settings=[Settings new]; 
    [settings loadData]; 

    //username.text=settings.username; 
    [email protected]"Test"; 
} 

По какой-то причине это не работает !!! Однако, если у меня есть кнопка, которая при нажатии на нее обновит текстовое поле.

например.

- (IBAction)login:(id)sender{ 
    [email protected]"test"; 
} 

Таким образом, кнопка обновляет текст, но я не могу обновить его из viewDidLoad. Это проблема с потоками? Я не могу поверить, что так просто так долго.

ответ

9

Элементы управления, вероятно, не созданы на данном этапе.

Попробуйте установить значение в - (void)viewDidAppear:(BOOL)animated в вашем ViewController.

Вы также можете попробовать - (void)viewWillAppear:(BOOL)animated.

+2

Я уверен, что после viewDidLoad элементы управления будут созданы. Я могу изменить местозаполнитель, используя username.placeholder = @ "Test"; однако имя пользователя.text = @ «Тест» не работает. – 2009-09-02 11:23:01

+0

ОК, у меня просто смутное воспоминание о просмотре одного из видео в Стэнфорде, и они упоминают что-то о порядке загрузки, инициализации и структуре, ленив, не загружая до тех пор, пока не потребуется. – Xetius

+0

Но моя память вполне могла подняться на носик! – Xetius

3

я не знаю, почему, но вы можете изменить только текст текстового поля после того, как было первоначально отображается

=> использовать - (void)viewDidAppear:(BOOL)animated

это будет работать

0

You» ve объявило текстовое поле как IBOutlet внутри свойства. Ошибка, которую я совершила, заключалась в том, что я забыл, что подключил выходные данные (текстовые поля) к моему владельцу файла в Interface Builder.