Ios swift-检查另一个类中的uitextfield是否为空

Ios swift-检查另一个类中的uitextfield是否为空,ios,swift,uitextfield,optional,Ios,Swift,Uitextfield,Optional,我想验证父视图控制器中容器中的表单。单击父视图控制器中的按钮时,我如何验证表单(检查所有字段是否为nil)。该按钮在父视图控制器中有一个IBOutlet,用于从窗体的类调用方法 @IBAction func submitOrder(sender: AnyObject) { let formView = FormViewController() formView.getFieldValues() } 方法是, func getFieldVa

我想验证父视图控制器中容器中的表单。单击父视图控制器中的按钮时,我如何验证表单(检查所有字段是否为
nil
)。该按钮在父视图控制器中有一个
IBOutlet
,用于从窗体的类调用方法

    @IBAction func submitOrder(sender: AnyObject) {
        let formView = FormViewController()
        formView.getFieldValues()
    }
方法是,

    func getFieldValues() {
        if (self.nameField.text == "") {
            print("Name field is empty")
        }
    }
子视图中的
nameField
具有IBOutlet

@IBOutlet weak var nameField: UITextField!
当单击父视图控制器中的按钮时,我得到经典错误

致命错误:在展开可选值时意外发现nil


因此,这与optionals或父视图控制器无法识别容器视图中的文本字段有关。

一种方法是,您可以使用textfield的委托方法临时保存textfield数据(用户键入的任何数据)(与用户默认值类似)

单击按钮时,您只需检查存储的数据,如果未键入任何内容,则返回nil或空字符串,无论它是什么,您都可以识别它并验证文本字段。

当您写入:

    let formView = FormViewController()
    formView.getFieldValues()
您创建了一个全新的FormViewController,它不是从故事板加载的,因此没有连接插座。但是,即使它们被连接到某个东西,它也会连接到新的文本字段,而不是屏幕上的文本字段

你不应该创建一个新的——你应该访问你正在显示的那个


如果没有更多的代码,我们将无能为力,但是如果您在父视图中创建了正在显示的表单视图,请保留对它的引用,以便您以后可以访问它。

Lou关于问题的根源是
FormViewController
的新的未连接实例的说法是正确的。要使父视图控制器识别容器视图的
uiTextFields
,必须使用
prepareforsgue
。在故事板中命名
containerView
segue后,必须实现此方法

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "formView" {
        formView = segue.destinationViewController as? FormViewController
    }
}

formView
是类中声明的FormViewController的空实例。建立此连接允许父视图类获取
FormViewController

UITextFields
的值容器视图中的子视图是UITableView的子类,因为它具有静态单元格。如何创建连接到容器视图(UIView)的FormViewController实例?非常确定您可以在父对象的ChildViewController中找到它--可能只有一个对象--您可以强制转换以查看它是否在。