2013-03-12 4 views
3

У меня есть главный контроллер представления, отображающийся на экране, и класс (делегат), работающий в фоновом режиме, получающий позиции. Когда я получаю результат, я вызываю метод делегата в контроллере представления, чтобы обновить метку на экране. Я попробовал несколько способов, но до сих пор не обновил экран.self.view setNeedsDisplay и self.view setNeedsLayout не работают

Вот метод:

-(void) updateDisplay 
{ 

    NSLog(@"%@",myPosition.currentArea); 
    _area.text = [NSString stringWithFormat:@"area = %@",myPosition.currentShopArea]; 


    //[self.view performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:YES]; 
    [self.view setNeedsDisplay]; 
    //[self.view setNeedsLayout]; 
} 

проверить консоль, она показывает правильную область, но на экране все еще показывает нуль. Я пробовал все три способа (прокомментировал выше), но ни один из них не обновляет экран.

ответ

2

Вы могли бы попробовать 2 вещи:

  1. призывающих updateDisplay на главной теме:

    [delegate performSelectorOnMainThread:@selector(updateDisplay) withObject:nil waitUntilDone:YES]; 
    

    в конце концов, он получает доступ к UIKit, так что лучше делать это правильно;

  2. , если это не помогает, попробуйте:

    [_area setNeedsDisplay]; 
    

    В этом случае, если бы целесообразно использовать метод в основном потоке.

+0

это работает, спасибо – Ali

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