2015-06-05 29 views
0

我一直在尋找兩天,現在試圖找到答案。我甚至可能沒有正確地問這個問題,所以原諒我,如果是這樣的話。如何強制PickerView默認爲數組項[0]

我希望我的數據選取器默認爲該textField的數據源數組的第[0]項。目前,我看不到如何加載pickerView時選擇數組項目的一致性。我有一個空白(「」)作爲數組中的第一個項目,認爲用戶會看到一個空白,作爲pickerView中的默認項目,其後所有其他項目。

當pickerView加載並顯示給用戶時,如何強制pickerView在數組中顯示「」(每個數組中的[0] th項)作爲默認選定值?

下面是pickerViews代碼:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return self.activeDataArray.count 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
    return self.activeDataArray[row] as! String 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    if activeDataArray == personnelName { 
     enterPersonnelName.text = personnelName[row] as String 
    } 
    else if activeDataArray == drugID { 
     enterDrugID.text = drugID[row] as String 
    } 
    else if activeDataArray == packageNumber { 
     enterPackageNumber.text = packageNumber[row] as String 
     enterQty.text = quantity[0] 
     enterExpDate.text = expDate[0] 
    } 
    //put pickerView away 
    self.view.endEditing(true) 
} 

編輯:代碼調用pickerView

func textFieldDidBeginEditing(textField: UITextField) { 
    activeDataArray == [] //clear out the clicked field data array 
    if textField == enterPersonnelName { 
     activeDataArray = personnelName 
    } else 
     if textField == enterDrugID { 
      activeDataArray = drugID 
    } else 
     if textField == enterPackageNumber { 
      activeDataArray = packageNumber 
    } else 
     if textField == enterQty { 
      activeDataArray = quantity 
    } else 
     if textField == enterExpDate { 
      activeDataArray = expDate 
    } 
    dataPickerView.reloadAllComponents() //clear out components of the dataPickerView 
    dataPickerView.hidden = false 
} 

回答

1

Selecting Rows in the View Picker

override func viewDidLoad() { 
    super.viewDidLoad() 
    pickerView.delegate = self 
    pickerView.selectRow(0, inComponent: 0, animated: false) 
} 
+0

謝謝。視圖中有多個textField,因此您給出的代碼適用於第一個字段,但是在pickerView從數據數組中選擇一個不同的(不一致的)項之後,我會點擊每個字段。有沒有其他地方可以放置命令,以便每次調用pickerView時執行?我真的不在乎是否必須多次添加它。我不會選擇最簡化的代碼,只需按照他們需要的方式工作即可。 – Greg

+0

@Greg你需要發佈你如何調用選擇器視圖 –

+0

我通過添加該代碼來編輯原始問題。謝謝你的幫助。 – Greg

0

我這樣做是爲了解決該問題:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    pickerview.dataSource = self 
    pickerview.delegate = self 
    pickerviewLabel.text = pickerviewArray[0] 
    } 

我宣佈UIPickerView後的數組:

@IBOutlet weak var pickerview: UIPickerView! 
    let pickerviewArray = ["x","y","z","k"]