2012-02-11 2 views
0

Я пытаюсь показать и скрыть три элемента управления, такие как UIBUtton, UILabel и т. Д. В каком-то сценарии. Я делаю это, используя ниже две функции.iPhone: Скрыть/Показать элементы управления под ответ

- (void) hide 
{ 
    usernameField.hidden=YES; 
    passwordField.hidden=YES; 
    myLabel.hidden=YES;  
} 

- (void) show 
{ 
    usernameFieldField.hidden=NO; 
    passwordField.hidden=NO; 
    myLabel.hidden=NO; 
} 

Но, когда я называю эти функции в рамках некоторого кода ответа сервера, что я пытаюсь показать под connectionDidFinishLoading успеха/сервер response..Its неудачи не делает. т. е. не показывать или скрывать эти элементы управления в этих ситуациях. Но в то же время, если я вызываю эти функции под одним нажатием кнопки, его отображение/скрытие элементов управления. Итак, будут ли эти функции вызываться только в некоторых событиях, таких как нажатие кнопки? Мы не можем позвонить из любого места, как я пытаюсь это сделать?

Обратите внимание!

ответ

1

в вашем connectionDidFinishLoading

[self performSelectorOnMainThread:@selector(show) 
        withObject:nil 
        waitUntilDone:wait]; 

причина - показать обновление для UI, чтобы вызвать перерисовку.

0

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

Если основной поток занят, то у них не будет возможности нарисовать себя.

Ваш код NSURLConnection работает в основном потоке? Вы должны переместить его в фоновый поток (но будьте осторожны, изменяя скрытое свойство должно быть сделано в основном потоке, а не в фоновом потоке! Посмотрите Grand Central Dispatch.)

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