2017-07-04 58 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

@Pochi用戶在其上寫入內容。 –

+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目標(textChanged)被添加到每個事件的textField
2

您的代碼將不起作用,因爲該檢查只在加載View Controller時執行一次。

您需要做的是每次用戶完成編輯文本字段時運行出現()函數。

所以只是你的文本視圖的委託設置爲這個視圖控制器和實現這個功能:

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

我正在使用textfield而不是textview。 –

+0

然後使用textfield版本,它是一樣的。 – Pochi

+0

或者保持一個按鈕並在按鈕單擊時調用'出現()'功能 –