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

或者保持一个按钮并在按钮单击时调用'出现()'功能 –