Swift

2015-04-11 20 views
6

'da bir gözlemci kayıtlıysa nasıl elde edilir Bir gözlemciyi çalıştırdıktan sonra veya görünüm kaybolduğunda kaldırmak istiyorum. İşte kod, ancak tekrar kaldırmak istediğimde bazen gözlemci kaldırılmıştı. Hala kayıtlı olup olmadığını nasıl kontrol edebilirim?Swift

override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) { 
    if(!didOnce){ 
     if(keyPath == "myLocation"){ 
      location = mapView.myLocation.coordinate; 

      self.mapView.animateToLocation(self.location!); 
      self.mapView.animateToZoom(15); 
      didOnce = true; 
      self.mapView.removeObserver(self, forKeyPath: "myLocation"); 
     } 
    } 
} 
override func viewDidAppear(animated: Bool) { 
    didOnce = false; 
} 
override func viewWillDisappear(animated: Bool) { 
    if(!didOnce){ 

     self.mapView.removeObserver(self, forKeyPath: "myLocation"); 
     didOnce = true; 
    } 
} 

cevap

10

Doğru yoldasınız. Sınıfınıza bir isObserving özellik ekleyin. Gözlemlemeye başladığınızda bunu true olarak ayarlayın ve gözlemlemeyi durdurduğunuzda yanlış olarak ayarlayın. Her durumda, bu durumda olmadığınızdan emin olmak için gözlemlemeye başlamadan/durdurmadan önce bayrağı kontrol edin.

Ayrıca, mülke bir willSet yöntemi ekleyebilir ve özellik durumları değiştiğinde bu kodun başlatılmasını/durdurulmasını sağlayabilirsiniz.