2013-03-28 4 views
1

Я хочу показать изображение полной страницы каждый раз, когда отображается UIViewController. Я думаю, что мне нужно вызвать метод внутри viewDidAppear или ViewWillAppear, но они вызываются один раз.Вызовите метод каждый раз, когда отображается UIViewController

- (void) viewDidAppear:(BOOL)animated{ 
    [self showAds]; 
} 

- (void) showAds{ 
    //Do Something 
} 

Что я должен сделать, чтобы вызвать метод каждый раз, когда показано UIViewController (даже если его уже создан)?

+1

с весь метод в ViewWillAppear будет вызываться каждый раз при входе в конкретное представление. – Pratik

+0

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

+0

, когда вы говорите «показано», что вы имеете в виду? Вернись с фона? Или выталкивается из навигационного контроллера, представленного модально, что-то в этом роде? –

ответ

3

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

Регистрация для Notifcation, когда ваше приложение входит в Forground in viewDidLoad.

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

написать метод для вызова, когда приложение enterForground

-(void)handleEnteredBackground 
{ 
    NSLog(@"%s",__FUNCTION__); 
    // Your stuff here 
} 

Не забудьте удалить наблюдателя в методе viewDidUnload

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

Создать новую Уведомление каждый раз приложение enterForground

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 

    [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidBecomeActiveNotification object:nil]; 
} 
+0

Это уведомление должно быть опубликовано автоматически, если я правильно помню. –

+0

да @CarlVeazey я знаю, но его для знания. его просто ошибка в написании. –

+0

Спасибо! Это решило мою проблему. Но viewDidUnload устарел. Что я должен использовать? – marceloquinta

1

ViewWillAppear следует вызывать каждый раз. Использование:

- (void) viewWillAppear:(BOOL)animated{ 
    [self showAds]; 
} 
+1

Он называется только один раз. Не работает. – marceloquinta

+0

http://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of –

+3

viewWillAppear вызывается при загрузке uiviewcontroller. Предположим: пользователь нажимает кнопку «домой» после загрузки вида. когда пользователь снова войдет в приложение, viewWillAppear не будет вызван. Попробуй это. – marceloquinta

3

ViewWillAppear будет вызываться каждый раз, когда UIViewController показано, но не будет вызываться, когда приложение возвращается на передний план.

+0

Я согласен. Я могу проверить, что это тоже поведение. –

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