2017-07-04 10 views
2

テキストがない場合は、テキストファイルにテキストがある場合にのみラベルを表示するようにしたいと思います。それでおしまい。私の下のコードは、私が上で説明したことをしません。テキストフィールドに応じたelse文(swif3)

import UIKit 
class ViewController: UIViewController { 

    @IBOutlet var label: UILabel! 
    @IBOutlet var txtfield: UITextField! 
override func viewDidLoad() { 
super.viewDidLoad() 
appear() 

    } 
    func appear() { 

if (txtfield.text?.isEmpty)! { 
    label.isHidden = true 

} 
else { 
    label.isHidden = false 
}}} 
+0

テキストフィールドはどのように埋められますか?他のビューコントローラからプログラムによってまたはユーザーが何かを書きますか? – Pochi

+0

@ポチユーザーが何かを書きます。 –

+0

だから、ユーザーがこのビューコントローラーに何かを書き込んだ後でラベルを表示/非表示にしたいとします。右? – Pochi

答えて

0

次のコードを使用してください。

override func viewWillAppear(_ animated: Bool) 
    { 
     textChanged(txtField) 
    } 

    func textChanged(_ textField: UITextField) { 

     if textField.text == "" 
     { 
      textField.isHidden = true 
     } 
     else 
     { 
      textField.isHidden = false 
     } 
     print("Hello") 
    } 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     txtField.addTarget(self, action: #selector(textChanged(_:)),for: .allEvents) 
    } 
  • func textChangedそれが空である場合は、あなたのtextFieldを非表示になります。
  • viewWillAppearに追加すると、表示される画面でtextFieldがチェックされます。
  • viewDidLoadでは、イベント毎にtextFieldにターゲット(textChanged)が追加されます。
2

このチェックは、View Controllerがロードされているときにのみ実行されるため、コードは機能しません。

あなたがしなければならないことは、ユーザーがテキストフィールドの編集を終了するたびにappear()関数を実行することです。

は、だから、このビューコントローラへのあなたのテキストビューのデリゲートを設定して、この機能を実装します。

optional func textViewDidEndEditing(_ textView: UITextView) 

https://developer.apple.com/documentation/uikit/uitextviewdelegate/1618628-textviewdidendediting

それからちょうどその内側)(表示されます呼び出します。

編集:テキストフィールドのバージョン

optional func textFieldDidEndEditing(_ textField: UITextField) 

https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619591-textfielddidendediting

+0

私はテキストビューではなくテキストフィールドを使用しています。 –

+0

次に、テキストフィールドバージョンを使用します。これは同じです。 – Pochi

+0

またはボタンを1つ押したまま、ボタンクリックで 'appear()'関数を呼び出す –

関連する問題