2017-12-31 24 views
0

私の保存ボタンは、コードsaveBtnHidden()で隠されています。ただし、テキストフィールドにテキストを入力すると、保存ボタンは再表示されません。私はこれに似た複数のソリューションを試しました。テキストフィールドに入力するたびに、保存ボタンが表示されません。テキストフィールドが空でないスウィフトの保存ボタンを表示

import UIKit 

class TableViewController: UITableViewController, UITextFieldDelegate { 

    @IBOutlet weak var saveBtn: UIButton! 
    @IBOutlet var nicknameField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     saveBtnHidden()  
    } 

    func saveBtnHidden() { 
     if (nicknameField.text?.isEmpty ?? true) { 
      // is empty 
      saveBtn.isHidden = true 
     } else { 
      saveBtn.isHidden = false 
     } 
    } 

    @IBAction func saveBtnPressed(_ sender: Any) { 
     performSegue(withIdentifier: "nextPage", sender: nil) 
    } 
} 

答えて

1

あなたの関数saveBtnHidden()のみviewDidLoad()でたらと呼ばれているため、このエラーを取得しています。テキストフィールドのテキストが変更されたときに再び呼び出されることはありません。テキストの変更は、あなたがそれを変更する関数(.editingChanged)を呼び出して、あなたのテキストフィールドにターゲットを追加する必要がありますときに、このように検出するには:次に

nicknameField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) 

textFieldDidChangeに呼び出すあなたのsaveBtnHidden()機能:

func textFieldDidChange(_ textField: UITextField) { 
    saveBtnHidden() 
} 

コードから適応:任意の変更を通知することがdelegateを使用しHow do I check when a UITextField changes?

+0

それをしました!私はtextfielddidchangeについてもっと知る必要があります。複数のテキストフィールドを追加する場合は、作成されたフィールドごとにこのプロセスを繰り返しますか、またはすべてのフィールドの組み合わせを追加する方法はありますか? –

+0

複数のテキストフィールドの場合、私の例のようにすべてのテキストフィールドに同じターゲットを追加できます。そして、textFieldDidChange関数では、どのテキストフィールドが 'if textField == nicknameField {do something} –

+0

@LeoDabusで変更されたかを確認することができます。私は間違った場所にそれを入力しているに違いない。 –

0

。デリゲートは、iOS開発とアップルのフレームワークの重要な部分です。

class TableViewController: UITableViewController, UITextFieldDelegate { 

    @IBOutlet weak var saveBtn: UIButton! 
    @IBOutlet var nicknameField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     saveBtnHidden()  

     nicknameField.delegate = self 
    } 


    func textFieldDidChange(_ textField: UITextField) { 
     saveBtnHidden() 
    } 
// More of your source code below... 
関連する問題