2010-08-20 2 views
0

я наткнулся на странное поведение ...iphone - вид проблема инициализации

В классе А, в методе viewDidLoad я:

b = [[B alloc] initWithNibName:@"B" bundle:nil]; //init the B class (declared as B* b) 
[b setText:@"ABCDDEEE"]; //change the text of a UITextView in b 

к сведению, что вид Б не не отображается, пока кнопка нажата. Однако, когда я нажимаю его и перехожу к просмотру b, текст UITextView по-прежнему является текстом «lorem ipsun»

После того, как один вид b отображается один раз, я могу изменить текст.

Кто-нибудь знает эту проблему и как ее решить ??

+0

Возможно, ваш метод setText: пытается установить содержимое вашего текстового вида, которое еще не подключено? – Eiko

ответ

1

Ожидаемое поведение. initWithNibName не гарантирует полную инициализацию до viewDidLoad.

+0

Есть ли способ заставить его полностью загрузиться? – Daniel

+0

Я так не думаю. Вы можете вызвать '[b setText:]' и сохранить значение в члене вашего контроллера. Затем установите значение члена в вашем представлении 'viewWillAppear' вашего представления из члена. – tobiasbayer

1

Создайте NSString @property в B. Установите это свойство при загрузке b - не свойство .text UITextView, а объект данных NSString в контроллере представления. Затем в -(void)viewDidLoad B установите для свойства текста UITextView строку, которую вы установили.

Элементы NIB не обязательно существуют, когда контроллер родительского представления сначала создает новый контроллер представления, но вы можете разговаривать с полями данных, а затем загружать эти данные в элементы иерархии представления в -(void)viewDidLoad.

+0

Вот как я его реализовал =) – Daniel

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