2017-06-06 21 views
1

我使用的定位和cllocationManager语言已更改,但CLLocationManager未受影响?

时更改语言的每一件事情的工作也只是国家和城市的名字都与所有的定位不影响之前的语言,唯一的办法就是关闭应用程序,并打开它再次用新的语言来! 任何解决方案来更改国家和城市而不关闭应用程序?

本地化代码

static func setLanguage(lang:String) -> Void { 
    UserDefaults.standard.removeObject(forKey: "AppleLanguages") 
    UserDefaults.standard.set([lang], forKey: "AppleLanguages") 
    UserDefaults.standard.synchronize() 

    Bundle.setLanguage(lang) 
} 

CLLocationManager代码

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    locValue = manager.location!.coordinate 
    print("locations = \(locValue.latitude) \(locValue.longitude)") 


    let geoCoder = CLGeocoder() 
    let location = CLLocation(latitude: locValue.latitude, longitude: locValue.longitude) 

    geoCoder.reverseGeocodeLocation(location, completionHandler: { (placemarks, error) -> Void in 

     // Place details 
     var placeMark: CLPlacemark! 
     placeMark = placemarks?[0] 

     if placeMark != nil{ 
      // City 
      if let city = placeMark.addressDictionary!["State"] as? NSString { 

       self.locCity = city as String 
      } 



      // Country 
      if let country = placeMark.addressDictionary!["Country"] as? NSString { 

       self.locCountry = "\(country)," as String 
      } 

      self.countryLocation.text = "\(self.locCountry) \(self.locCity)" 
      self.locationManager.stopUpdatingLocation() 
     } 

    }) 
} 

回答

1

你必须对NSLocale.currentLocaleDidChangeNotification添加一个观察者来检测任何改变。

事情是这样的:

NotificationCenter.default.addObserver(self, selector: #selector(MyClass.languageDidChange), 
               name: NSLocale.currentLocaleDidChangeNotification, object: nil) 

而且languageDidChange方法一次东西NSLocale得到改变将被调用。

希望这会有所帮助。

+0

我尝试它但同样的事情,问题不是火灾变化的语言问题是CLLocationManager没有采取任何语言参数,它需要重新启动应用程序 – MOMMH

+0

@MOMMH不得不尝试重新初始化' CLLocationManager'? –

+0

不,但我不知道如何重新初始化CLLocationManager,请提供任何示例代码或链接? – MOMMH