iPhone: скрыть / показать элементы управления под ответом - PullRequest
0 голосов
/ 11 февраля 2012

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

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

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

Но, когда я вызываю эти функции по какому-то коду ответа сервера, то есть пытаюсь показать под connectionDidFinishLoading в ответе сервера об успехе / сбое .. Он этого не делает. то есть он не показывает или не скрывает эти элементы управления в этих ситуациях ... Но в то же время, если я вызываю эти функции при нажатии кнопки, это показывает / скрывает элементы управления ... Так, будут ли эти функции вызываться только при некоторых событиях, таких как нажатие кнопки? Разве мы не можем звонить откуда угодно, как я пытаюсь сделать?

Пожалуйста, сообщите!

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

в вашей связи DidFinishLoading

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

причина в том, что обновление интерфейса вызывается в главном потоке для перерисовки.

0 голосов
/ 11 февраля 2012

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

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

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

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