2015-04-20 1 views
-4

I bult приложение iOS и в -(void)viewDidLoad Я анализирую данные из Интернета и отображаю его при загрузке. Но часто, когда я открываю свое приложение, он отображает старые данные (приложение загружается быстро), и мне нужно его убить и снова открыть, после чего он анализирует данные и показывает новые. Почему это происходит?Приложение Obj-C не загружается с начала

+0

Вы тестируете свое приложение на iOS Simulator или на самом устройстве? – LinusGeffarth

+0

Фактическое устройство, в симуляторе, оно загружается каждый раз с самого начала (это хорошо), это похоже на то, что приложение кэширует приложение – opengl

+1

'viewDidLoad' не вызывается каждый раз, когда появляется представление. – nhgrif

ответ

-1

Это не работает, потому что viewDidLoad вызывается только один раз, когда создается представление. После просмотра и возврата ваше мнение все еще существует.

Если вы хотите, чтобы перезагрузить данные всякий раз, когда приложение возвращается из фона, вам необходимо либо отменить applicationDidBecomeActive: в вашей реализации UIApplicationDelegate, или вам нужно для прослушивания соответствующего уведомления:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(applicationDidBecomeActive:) 
               name:UIApplicationDidBecomeActiveNotification 
               object:nil]; 
} 

- (void)applicationDidBecomeActive:(NSNotification *)notification 
{ 
    // reload your data here. 
} 

Не забудьте удалить себя в качестве наблюдателя, когда вам больше не требуется уведомление.

+0

Это не то, о чем он просил. – LinusGeffarth

+1

Если мы возьмем его вопрос «почему это не работает» буквально, да, я думаю, я забыл сказать: «Это не работает, потому что теперь все работает». Вместо этого я сказал ему, как выполнить то, что, по его мнению, должно произойти. Спасибо, что показал мне ошибку моих путей. –

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