2015-03-31 73 views
4

我目前正在研究一個小項目,並且我有一個viewController,它有4個textFields,它們可以正常工作。他們採取字符串對象。但是,第4個textField應該帶有一個帶有4個可選項目的UIPickerView。當用戶點擊UITextfield時,以編程方式實現UIPickerView

到目前爲止,這是我在我的控制器實現這一點:

 @IBOutlet var pickerTextfield: UITextField! 
    @IBOutlet var itemPicker: UIPickerView! = UIPickerView() 

pickerTextfield是UITextField對象是第四場。 itemPicker是一個未鏈接的UIPickerView,我想以編程方式創建。

右下面這些屬性,我有一個項目爲UIPickerView對象的數組:

var seasonalItems = ["Spring", "Summer", "Fall", "Winter"] 

在我viewDidLoad中方法我有這個如下:

itemPicker.hidden = true; 
    pickerTextfield.text = seasonalItems[0] 

    pickerTextfield.delegate = self 

而其餘的的實施:

// Below the lines i s的文字的選擇器

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

// returns the # of rows in each component.. 
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{ 
    return seasonalItems.count 
} 

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

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) 
{ 
    pickerTextfield.text = seasonalItems[row] 
    itemPicker.hidden = true; 
} 

func textFieldShouldBeginEditing(textField: UITextField) -> Bool { 
    itemPicker.hidden = false 
    return false 
} 

所以從這個最後的結果是,當我點擊在該應用中的pickerTextfield對象,它顯示了陣列的第一項(彈簧),但在UITextField對象內執行,但它不會顯示UIPickerView對象與其他可選項目,我可以選擇其中一個,然後在選定時隱藏它。

我的問題是,我在哪裏或在做什麼錯在這裏?我一直試圖自己弄清楚這一點,但我似乎沒有得到很好的清晰的例子與斯威夫特和故事板。我寧願不要在故事板中拖動一個UIPickerView,而是以我試圖實現的方式。謝謝

回答

2

您可以給UIPickerView作爲inputView爲您的TextField其中您要顯示選取器視圖。 在這種情況下,您也不需要初始隱藏選取器視圖。

pickerTextfield.inputView = itemPicker 

當您使用UIPickerView任何UITextFieldinputView那麼當你在TextField,而不是默認的鍵盤PickerView將顯示挖掘。

+0

任何人有任何其他方法?這仍然不起作用 – Amit 2015-04-04 04:41:14

+0

@認爲它似乎工作。你遇到了什麼問題? – webjunkie 2016-08-11 02:16:29

相關問題