首页 > 解决方案 > Eureka in swift List Selection Selected Value 导航离开时自动取消选择

问题描述

我正在实施尤里卡列表选择。在语言选择中,有 7 个值可供选择。值 1 到 6 是好的。但是,当最后一个被选中并且用户离开 VC 时,它会自动取消选择。我想知道我的代码是否有问题。我试图“硬编码” viewWillAppear 上的最后一个选择,这样应用程序才能顺利运行,是的。但这有点奇怪,因为没有选择任何选择。我是编程初学者,非常感谢任何帮助。谢谢

import Eureka

class ListSectionsController: FormViewController {
    
    let defaults = UserDefaults.standard
    
    var languageSelected = "English (default)"
    
    override func viewDidAppear(_ animated: Bool) {
        
        defaults.set(languageSelected, forKey: "LanguageSelection")
    }
    
    override func viewWillAppear(_ animated: Bool) {
        
        if let language = defaults.string(forKey: "LanguageSelection") {
            if language == "Korean 한국어" {
                languageSelected = language
                
            }
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
                
        let languageSelections = ["English (default)", "Spanish", "Japanese 日本語", "Chinese Mandarin 普通话", "Indonesian", "Dutch - het Nederlands", "Korean 한국어"]
        

        form +++ SelectableSection<ImageCheckRow<String>>() { section in
            section.header = HeaderFooterView(title: "Language Selection")
       
        }
        
        for option in languageSelections {

            if let language = self.defaults.string(forKey: "LanguageSelection") {
                self.form.setValues([language : language])
            } else {
                self.form.setValues([languageSelected : languageSelected])
            }

            form.last! <<< ImageCheckRow<String>(option){ lrow in
                lrow.title = option
                lrow.selectableValue = option
                lrow.value = nil
            }
        }
    }
    
    override func valueHasBeenChanged(for row: BaseRow, oldValue: Any?, newValue: Any?) {
        
        if row.section === form[0] {
            if let selected = (row.section as! SelectableSection<ImageCheckRow<String>>).selectedRow()?.baseValue {
                print("Selected: \(selected)")
                languageSelected = selected as! String
                defaults.set(languageSelected, forKey: "LanguageSelection")
            }
        } else if row.section === form[1] {
            print("Mutiple Selection:\((row.section as! SelectableSection<ImageCheckRow<String>>).selectedRows().map({$0.baseValue}))")
        }
    }
}

标签: swiftnetflix-eureka

解决方案


推荐阅读