2017-11-28 15 views
0

私は時間を入力したい2つのテキストフィールドを持っています。 私は、inputViewが日付ピッカーであるように、テキストフィールドの1つを取得しましたが、他のテキストフィールドにも日付ピッカーを持つようにコードを変更する簡単な方法があるかどうかはわかりません入力フィールドここで同じ日付ピッカーの2つのテキストフィールド

は私のコードです:

func createDatePicker(){ 
    let toolbar = UIToolbar() 
    toolbar.sizeToFit() 

    //done button 
    let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed)) 
    toolbar.setItems([done], animated: false) 

    fromTextField.inputAccessoryView = toolbar 
    fromTextField.inputView = picker 


    picker.datePickerMode = .time 
    picker.minuteInterval = 15 

} 
@objc func donePressed(){ 
    let formatter = DateFormatter() 
    formatter.dateStyle = .none 
    formatter.timeStyle = .short 
    let dateString = formatter.string(from: picker.date) 

    fromTextField.text = "\(dateString)" 
    self.view.endEditing(true) 

} 

あまりにもちょうどこれらの2つの関数のコピーを作成する以外にtoTextFieldのためにこのコードを動作させるための最善の方法でしょうか?

あなたが行うことができます
+1

あなたはTextFieldにタグを使用して、この機能では、各テキストフィールドのオブジェクトを渡すことができます。 – PiyushRathi

+0

こんにちはなぜあなたは、テキストフィールドを渡すことができるdatepickerフラグメントを使用しないでください –

答えて

0

func createDatePicker(forField field : UITextField){ 
    let toolbar = UIToolbar() 
    toolbar.sizeToFit() 

    //done button 
    let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed)) 
    toolbar.setItems([done], animated: false) 

    field.inputAccessoryView = toolbar 
    field.inputView = picker 


    picker.datePickerMode = .time 
    picker.minuteInterval = 15 

} 

//later 
self.createDatePicker(forField: fromTextField) 
self.createDatePicker(forField: toTextField) 
+0

関数donepressedについては、フィールド変数でも呼び出すことができますか?私はこのエラーを受け取りました: "#selector"の引数は、donePressed(forField:field)を呼び出そうとすると、 '@objc'メソッド、プロパティ、またはイニシャライザを参照しません。 – user3628240

0

をinputView @ CZ54の答えは、すなわち

func createDatePicker(forField field : UITextField){ 
    let toolbar = UIToolbar() 
    toolbar.sizeToFit() 

    //done button 
    let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed)) 
    toolbar.setItems([done], animated: false) 

    field.inputAccessoryView = toolbar 
    field.inputView = picker 


    picker.datePickerMode = .time 
    picker.minuteInterval = 15 

} 

//later 
self.createDatePicker(forField: fromTextField) 
self.createDatePicker(forField: toTextField) 

そして、あなたが持っているアクティブなテキストフィールドごとにpickerViewからデータをフェッチする正しいと同じpickerViewを有する二つのTextFieldを作成するためにUITextFieldの変数を作成し、次のように割り当てます。

var activeTextField: UITextField! 

func textFieldDidBeginEditing(_ textField: UITextField) { 
    activeTextField = textField 
} 

と行は次のようで、pickerViewに選択されるたびに実行することができ、関連するアクション

if activeTextField == fromTextField { 
    //action 
} else if activeTextField == toTextField { 
    //action 
} 
関連する問題