2017-10-23 2 views
0

ScreesnshotがpickerView

からのテキストの後に選択された値を表示私は両方のpickerViewsから値選択したユーザーの後のViewController内のテキストを取得したいです。

計算が不要です。

たとえば、「25 Jahre」の最初のピッカーをクリックし、2番目の「25 Euro」を選択します。今、私はTextFieldの下にテキストが必要です。

import UIKit 

class ViewController3Rechner: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource { 
    @IBOutlet weak var LaufZeitText: UITextField! 
    @IBOutlet weak var BeitragText: UITextField! 

    var Laufzeit = ["10 Jahre", "15 Jahre", "20 Jahre", "25 Jahre", "30 Jahre", "35 Jahre", "40 Jahre"] 
    var Beitrag = ["50 Euro", "75 Euro", "100 Euro", "125 Euro", "150 Euro", "175 Euro", "200 Euro", "250 Euro", "300 Euro"] 

    let picker = UIPickerView() 
    let beitrag = UIPickerView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     picker.delegate = self 
     picker.dataSource = self 
     beitrag.delegate = self 
     beitrag.dataSource = self 

     // binding textfield to picker 
     LaufZeitText.inputView = picker 
     BeitragText.inputView = beitrag 
    } 

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     var countrows : Int = Laufzeit.count 
     if pickerView == beitrag { 
      countrows = self.Beitrag.count 
     } 

     return countrows 
    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     if pickerView == picker { 
      let titleRow = Laufzeit[row] 
      return titleRow 
     } else if pickerView == beitrag { 
      let titleRow = Beitrag[row] 
      return titleRow 
     } 

     return "" 
    } 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     if pickerView == picker { 
      self.LaufZeitText.text = self.Laufzeit[row] 

      self.view.endEditing(true) 

     } else if pickerView == beitrag { 
      self.BeitragText.text = self.Beitrag[row] 

      self.view.endEditing(true) 
     } 
    } 
} 
+0

あなたのコードはどのようになっていますか? – Annjawn

+0

ああ申し訳ありません:編集済み –

答えて

0

現在のコードでは、ピッカービューで行が選択されたときに、各テキストフィールドに個別にデータが設定されている必要があります。

私はあなたの質問で理解できることから、両方のピッカーが行を選択したときにのみ両方を埋めるようにします。

テキストフィールドのtextプロパティに設定を置き換え、二つの新しいString変数、あなたのpickerView(_ pickerView: UIPickerView, didSelectRow関数内でこれらの文字列を設定しlaufZeitbeitrag

var laufZeit: String? 
var beitrag: String? 

を作成します。

if pickerView == picker { 
    laufZeit = self.Laufzeit[row] 

    self.view.endEditing(true) 

} else if pickerView == beitrag { 
    beitrag = self.Beitrag[row] 

    self.view.endEditing(true) 
} 

あなたが/ else文場合は、新しいString変数のそれぞれのdidSet内、または単に上記のいずれかの下に、この次のステップを行うことができる2つの方法があります。

あなたはそれがこのような何かを見てしたいと思ういずれかの方法:

if let laufZeitString = laufZeit, let beitragString = beitrag { 
    self.LaufZeitText.text = laufZeitString 
    self.BeitragText.text = beitragString 
} 

両方の変数が設定されているのであれば、両方のテキストフィールドは、人口を取得します。私はこれを独自の関数に投げています。おそらくpopulateTextFields()です。

関連する問題