选择器视图默认行未使用 swift 2 更改

Posted

技术标签:

【中文标题】选择器视图默认行未使用 swift 2 更改【英文标题】:Picker view default row is not changing using swift 2 【发布时间】:2016-02-23 06:05:15 【问题描述】:

我想通过从核心数据读取数据并检查它们以编程方式更改选择器视图默认选定行。 我使用了 select row 和 didselectrow 但实际上它只是改变了选择器视图的值,而不是它的可视选择行!这令人困惑。

我的意思是在这部分:

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)


【问题讨论】:

您的选择器视图创建错误此链接可能对您有所帮助youtube.com/watch?v=-K9b87R8cvI 你是什么意思?好的,我去看看视频 @ReshmiMajumder 它与我的问题无关,我希望能够通过使用代码更改它的 ui 中选择器视图选定的行,并且我所做的检查它的值是否正确并且它与我的应用程序,我不需要多个选择器视图行 你在 viewDidAppear 中试过了吗? @ali 是的,但它的行为没有改变我在这个块中放置了相同的代码:覆盖 func viewDidAppear(animated: Bool) 【参考方案1】:

我解决了这个问题,它与声明选择器视图数据源和委托这部分解决了我的问题:

override func viewDidLoad() 
    super.viewDidLoad()

    self.pickerView.dataSource = self
    self.pickerView.delegate = self

【讨论】:

以上是关于选择器视图默认行未使用 swift 2 更改的主要内容,如果未能解决你的问题,请参考以下文章

如何使选择器视图从 swift 3 中的特定行显示?

在 Drupal 7 公开视图下拉选择器过滤器中更改默认“-Any-”

如何在 Swift 中使用选择器视图值?

更改 ListView 项目背景颜色但保留默认选择器样式?

如何在 swift 3.0 中制作时间选择器视图?

日期选择器视图超小 - Swift Xcode