2016-03-22 8 views
0

私はSwiftを初めて使っていますが、私はそれをかなり上手く取り上げているようです。UIPickersのデータはUITextFieldから表示されません

私は、UIPickerViewsを表示するInputViewの4つのUITextFieldを持っていて、それらをプログラム内に配置してアプリ内に配置しました。私のコードはエラーを表示せず、すべてのUIPickerViewsがポップアップ(picker、picker2、picker3、picker4)しますが、4つのビューすべてで「気候」の配列のみが表示されます。ですから、私の明らかな問題は、世界でどのように残りの配列(環境、地域、予算)をUIPickerViewsに表示するのですか?

も、誰もがテキストフィールドに

を何かを貼り付けることができないことができるように私は、テキストフィールドを無効にする方法を側の要求は、ここに私のコードです:

import UIKit 

class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate { 

@IBOutlet weak var climateText: UITextField! 
@IBOutlet weak var environmentText: UITextField! 
@IBOutlet weak var regionText: UITextField! 
@IBOutlet weak var budgetText: UITextField! 

var picker = UIPickerView() 
var picker2 = UIPickerView() 
var picker3 = UIPickerView() 
var picker4 = UIPickerView() 


//MARK: Arrays for PickerViews 
var climates = ["Hot","Warm","Cold","Anywhere"] 
var environment = ["Beach","City","Mountain","Rural","Anywhere"] 
var region = ["Central America","Carribean","Europe","North America","South America","Anywhere"] 
var budget = ["$0-500","$501-1000","$1001-1500","$1501-2500","$2501 and up"] 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    picker.tag = 0 
    picker2.tag = 1 
    picker3.tag = 2 
    picker4.tag = 3 

    picker.delegate = self 
    picker2.delegate = self 
    picker3.delegate = self 
    picker4.delegate = self 

    picker.dataSource = self 
    picker2.dataSource = self 
    picker3.dataSource = self 
    picker4.dataSource = self 

    climateText.inputView = picker 
    environmentText.inputView = picker2 
    regionText.inputView = picker3 
    budgetText.inputView = picker4 
} 


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


func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    if picker.tag == 0 { 
     return climates.count 
    } else if picker2.tag == 1 { 
     return environment.count 
    } else if picker3.tag == 2 { 
     return region.count 
    } else if picker4.tag == 3 { 
     return budget.count 
    } 
    return 1 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    if picker.tag == 0 { 
     return climates[row] 
    } else if picker2.tag == 1 { 
     return environment[row] 
    } else if picker3.tag == 2 { 
     return region[row] 
    } else if picker4.tag == 3 { 
     return budget[row] 
    } 
    return "" 
} 


func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    if picker.tag == 0 { 
     climateText.text = climates[row] 
    } else if picker2.tag == 1 { 
     environmentText.text = environment[row] 
    } else if picker3.tag == 2 { 
     regionText.text = region[row] 
    } else if picker4.tag == 3 { 
     budgetText.text = budget[row] 
    } 
} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 
+0

多分、あなたは別のtextFieldをクリックした後にコンポーネントを再ロードする必要があります。 – Lee

答えて

0

私はありません代わりにこれを行うには、あなたのdidSelectRow機能を変更、この問題を過ぎてあなたを得るために、タグ(see point 2 here)を使用して、しかし、のファン:

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    if pickerView.tag == 0 { 
     climateText.text = climates[row] 
    } else if pickerView.tag == 1 { 
     environmentText.text = environment[row] 
    } else if pickerView.tag == 2 { 
     regionText.text = region[row] 
    } else if pickerView.tag == 3 { 
     budgetText.text = budget[row] 
    } 
} 

あなたの問題SIMPあなたがちょうどセクションを作ったピッカーのビューからタグを見たくないということでした。

+0

私はこれをやろうとは決して考えなかった!しかしもちろん、コードを変更してテストすると... Xcodeが更新を開始します!これが私の問題を解決すれば、私は今夜更新しておきます。ありがとう、マイケル! – blakejet1

+0

タグの代わりに、テキストフィールドからのピッカーを表示するためのより良い選択肢は何ですか? – blakejet1

+0

あなたが「pickerView == picker2'」&「 'if pickerView == picker3'」を実行すると、ユーザーが選択したピッカービューを特定できます。さらに、ピッカープロパティの名前*を、「picker3」のような不必要な名前から、「budgetPicker」のように変更してください。 –

関連する問題