2016-07-12 1 views
0

Je voudrais afficher une minuterie (minutes et secondes) dans différents viewcontrollers de mon application. Comment puis je faire ça ?Comment afficher une minuterie dans différents UIViewControllers dans Swift?

Je pensais utiliser la minuterie avec un Singleton, mais comment mettre à jour le bon label toutes les secondes?

+1

Avez-envoyer votre routine de mise à jour de la minuterie sur notifications Tout viewController qui est intéressé par l'affichage de cette minuterie peut écouter les notifications et mettre à jour leur étiquette. – vacawama

+1

J'ai utilisé cette méthode, cela fonctionne parfaitement, merci! – Will

Répondre

0

Oui, vous pouvez utiliser singleton

Cette méthode appel code updateLabel: chaque seconde

Obj-c

NSTimer* timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateLabel:) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; 

Swift

var myTimer: NSTimer? = nil 
override func viewDidAppear(animated: Bool) {  
    myTimer = NSTimer(timeInterval: 1.0, target: self, selector: #selector(MyClass.updateAmazing), 
    userInfo: nil, repeats: true) 
} 

func updateAmazing() { 
    //update 
} 

En singleton, vous devez démarrer la minuterie, sur le contrôleur, vous commencez à mettre à jour l'étiquette et la valeur à partir de singleton.

IMPORTANT

Sans oublier d'invalider la minuterie.

override func viewDidDisappear(animated: Bool) { 
    super.viewDidDisappear(animated) 
    myTimer.invalidate() 
} 
0

La façon la plus simple - utiliser NSNotificationCenter de Singleton Ou vous pouvez créer une matrice avec les délégués et la méthode d'appel lorsque la minuterie est mise à jour, tous les ViewControllers qui dans ce tableau recevront des messages