2017-03-02 49 views
1

我有一个UISegmentedControl称为langSeg用[英语&德国]两个指标,它控制在我的应用程序标签的使用下面的代码的语言:如何保存UISegmentedControl的状态Swift3与userDefaults

@IBAction func indexChanged(sender: UISegmentedControl) { 

    switch langSeg.selectedSegmentIndex 
    { 
    case 0: 

     let language = "en" 
     let path = Bundle.main.path(forResource: language, ofType: "lproj") 
     let bundle = Bundle(path: path!) 
     headerLbl.text = bundle?.localizedString(forKey: "HLbl", value: nil, table: nil) 
     UserDefaults.standard.set(["en"], forKey: "AppleLanguages") 

    case 1: 

     let language = "de" 
     let path = Bundle.main.path(forResource: language, ofType: "lproj") 
     let bundle = Bundle(path: path!) 
     descLbl.text = bundle?.localizedString(forKey: "DLbl", value: nil, table: nil) 
     UserDefaults.standard.set(["de"], forKey: "AppleLanguages") 

    default: 
     break; 
    } 
} 

在英语和德语之间切换并保存用户的选择;此代码工作正常,但当我在将语言更改为德语后重新启动我的应用程序时,标签标题以德语保存,但segmentedControl状态已更改为英文标题[index 0]。 请,我需要帮助保存用户对UISegmentedControl的选择,任何帮助真的很感激。 我试过这段代码:

langSeg.selectedSegmentIndex = sender.selectedSegmentIndex 
UserDefaults.standard.integer(forKey: "SegmentIndex") 

@IBAction func indexChanged(sender: UISegmentedControl) 

开关支架之后,但遗憾的是它没有工作......

回答

2
class ViewController: UIViewController { 

    @IBOutlet weak var segmentedControl: UISegmentedControl! 

    @IBAction func segmentSelected(_ sender: UISegmentedControl) { 

     UserDefaults.standard.set(sender.selectedSegmentIndex, forKey: "chosenLanguage") 
    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let value = UserDefaults.standard.value(forKey: "chosenLanguage"){ 
      let selectedIndex = value as! Int 
      segmentedControl.selectedSegmentIndex = selectedIndex 
     } 

    } 
} 
+0

谢谢@Alan,它工作:) – SwiftyLearner

1

你需要重新设置分段控制。

index = UserDefaults.standard.integer(forKey: "SegmentIndex") 
segmented.selectedSegmentIndex = index 

我会把这个你viewWillAppear中的方法或类似的东西在里面。只要确定它是在初始化分段控制之后。

+0

我在哪里可以添加此代码?我在@IBAction里面试过了,但是segmentedControl不能切换。 – SwiftyLearner

+0

我会将它添加到'viewDidAppear' – LoganHenderson