选择器视图默认行未使用 swift 2 更改
Picker view default row is not changing using swift 2
我想通过从核心数据中读取数据并检查它们,以编程方式更改选择器视图默认 selected 行。
我使用了 select 行并做了 select 行,但实际上它只是改变了选择器视图的值,而不是它的视觉 selected 行!这令人困惑。
我的意思是在这部分:
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
labelPassedData.text = languagePicker[row]
}
这部分:
func numberOfComponentsInPickerView (pickerView : UIPickerView) -> Int{
return 1
}
func pickerView(pickerView : UIPickerView , numberOfRowsInComponent component : Int) ->Int{
return languagePicker.count
}
func pickerView(pickerView : UIPickerView, titleForRow row:Int, forComponent component : Int) -> String?
{
return languagePicker[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
labelPassedData.text = languagePicker[row]
self.Insert(labelPassedData!.text!) // calling save lang function
let Language = languageDB[0]
dbshow!.text = Language.valueForKey("lang") as? String
self.view.endEditing(true)
}
我从核心数据中获取了值,但可视化选择器视图没有变化!
这是我的代码:
更新代码
override func viewDidAppear(animated: Bool) {
fetch("Language")
let Language = languageDB[0]
let row_value : String = Language.valueForKey("lang") as! String
let row_num : Int
if(row_value == "فارسی"){
row_num = 0
self.pickerView.selectRow(row_num, inComponent: 0, animated: true)
self.pickerView(self.pickerView, didSelectRow: row_num, inComponent: 0)
}else if(row_value == "English"){
row_num = 1
self.pickerView.selectRow(row_num, inComponent: 0, animated: true)
self.pickerView(self.pickerView, didSelectRow: row_num, inComponent: 0)
}else if(row_value == "العربية"){
row_num = 2
self.pickerView.selectRow(row_num, inComponent: 0, animated: true)
self.pickerView(self.pickerView, didSelectRow: row_num, inComponent: 0)
}
self.pickerView.reloadComponent(0)
}
我解决了这个问题,它与声明选择器视图数据源和委托有关这部分解决了我的问题:
override func viewDidLoad() {
super.viewDidLoad()
self.pickerView.dataSource = self
self.pickerView.delegate = self
}
我想通过从核心数据中读取数据并检查它们,以编程方式更改选择器视图默认 selected 行。 我使用了 select 行并做了 select 行,但实际上它只是改变了选择器视图的值,而不是它的视觉 selected 行!这令人困惑。
我的意思是在这部分:
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
labelPassedData.text = languagePicker[row]
}
这部分:
func numberOfComponentsInPickerView (pickerView : UIPickerView) -> Int{
return 1
}
func pickerView(pickerView : UIPickerView , numberOfRowsInComponent component : Int) ->Int{
return languagePicker.count
}
func pickerView(pickerView : UIPickerView, titleForRow row:Int, forComponent component : Int) -> String?
{
return languagePicker[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
labelPassedData.text = languagePicker[row]
self.Insert(labelPassedData!.text!) // calling save lang function
let Language = languageDB[0]
dbshow!.text = Language.valueForKey("lang") as? String
self.view.endEditing(true)
}
我从核心数据中获取了值,但可视化选择器视图没有变化!
这是我的代码:
更新代码
override func viewDidAppear(animated: Bool) {
fetch("Language")
let Language = languageDB[0]
let row_value : String = Language.valueForKey("lang") as! String
let row_num : Int
if(row_value == "فارسی"){
row_num = 0
self.pickerView.selectRow(row_num, inComponent: 0, animated: true)
self.pickerView(self.pickerView, didSelectRow: row_num, inComponent: 0)
}else if(row_value == "English"){
row_num = 1
self.pickerView.selectRow(row_num, inComponent: 0, animated: true)
self.pickerView(self.pickerView, didSelectRow: row_num, inComponent: 0)
}else if(row_value == "العربية"){
row_num = 2
self.pickerView.selectRow(row_num, inComponent: 0, animated: true)
self.pickerView(self.pickerView, didSelectRow: row_num, inComponent: 0)
}
self.pickerView.reloadComponent(0)
}
我解决了这个问题,它与声明选择器视图数据源和委托有关这部分解决了我的问题:
override func viewDidLoad() {
super.viewDidLoad()
self.pickerView.dataSource = self
self.pickerView.delegate = self
}