2012-11-09 1 views

risposta

9

Qualsiasi classe può registrarsi a UIApplicationWillEnterForegroundNotification e reagire di conseguenza. Non è riservato al delegato dell'app e aiuta a una migliore separazione del codice sorgente.

+0

Avete qualche collegamento di esempio perché non userò mai UIApplicationWillEnter ForegroundNotification? – CroiOS

+3

http://stackoverflow.com/questions/3535907/how-to-tell-when-controller-has-resumed-from-background – Cyrille

+0

Eccellente, funziona. Grazie mille. – CroiOS

0

È possibile dichiarare una proprietà nella classe di delega dell'app che indirizza l'oggetto HomeViewController. Quindi puoi chiamare la funzione di aggiornamento in applicationWillEnterForeground.

7

Creare un metodo viewDidLoad come questo per il tuo HomeViewController

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(yourUpdateMethodGoesHere:) 
               name:UIApplicationWillEnterForegroundNotification 
               object:nil]; 
} 

// Don't forget to remove the observer in your dealloc method. 
// Otherwise it will stay retained by the [NSNotificationCenter defaultCenter]... 
- (void) dealloc { 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [super dealloc]; 
} 

Se il ViewController è un tableViewController vostro potrebbe anche chiamare direttamente la funzione dei dati di ricarica:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:[self tableView] 
              selector:@selector(reloadData) 
               name:UIApplicationWillEnterForegroundNotification 
               object:nil]; 

} 
- (void) dealloc { 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [super dealloc]; 
} 

Oppure si potrebbe usare un blocco:

[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillEnterForegroundNotification 
                object:nil 
                queue:[NSOperationQueue mainQueue] 
               usingBlock:^(NSNotification *note) { 
                [[self tableView] reloadData]; 
               }]; 
+0

Non dimenticare di rimuovere l'osservatore su dealloc! – Cyrille

+0

davvero Cyrille! – Tieme