簡體   English   中英

如何使用userDefaults在Swift3中保存UISegmentedControl的狀態

[英]How to save the state of UISegmentedControl in Swift3 with userDefaults

我有一個名為langSeg的UISegmentedControl,其中有兩個標記為[English&German]的索引,它使用以下代碼控制我應用程序中標簽的語言:

@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狀態更改回英文標題[索引0]。 請,我需要幫助來保存用戶對UISegmentedControl的選擇,非常感謝任何幫助。 我試過這段代碼:

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

@IBAction func indexChanged(sender: UISegmentedControl)

開關支架后,但不幸的是它沒有工作......

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
        }

    }
}

您需要重置分段控件。

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

我會把它放在你的viewWillAppear方法或類似的東西里面。 只需確保它是在初始化分段控件之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM