执行 presentViewController 命令时出错

Error executing the presentViewController command

我确定我只是错过了一步,但我不知道是什么。我正在尝试编写一个可以重复调用的函数来对多个字段进行错误检查。当必填字段为空时,将调用该函数提醒用户,不允许 him/her 继续。我编写了错误陷阱第一个字段的代码,但随后试图使它成为我调用其余字段的函数。这只是为了测试,所以我知道代码至少适用于一个领域(它确实如此)。

当我 运行 并且第一个字段为空时,我得到了我期望的错误消息和行为。当我 运行 并且第一个字段有数据但第二​​个字段没有时,我没有收到任何错误消息(实际上根本没有 activity)。

我试图在函数中添加 self.presentViewController(dataErrorAlert, animated: true, completion: nil) 但它出错说:

cannot invoke 'presentViewContoller' with an argument list of type'((String, error: String) -> (), animated: Bool, completion: nil)

我不知道调用 presentViewController 命令的选项是什么。这是相关代码。感谢您的协助。

var missingDataError = ""

func dataErrorAlert(title:String, error:String) {
    var dataMissingAlert = UIAlertController(title: title, message: missingDataError, preferredStyle:UIAlertControllerStyle.Alert)
    dataMissingAlert.addAction((UIAlertAction(title: "OK", style: .Cancel, handler: nil)))
    self.presentViewController(dataErrorAlert, animated: true, completion: nil)
}

@IBAction func next(sender: AnyObject) {
    if enterPersonnelName.text == "" {
       let dataErrorAlert = UIAlertController(title: "Oops", message: "The Name field is empty and is required information.", preferredStyle:UIAlertControllerStyle.Alert)
        var cancelAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil)
        dataErrorAlert.addAction(cancelAction)
        self.presentViewController(dataErrorAlert, animated: true, completion: nil)
        blankData = 1
    } else { if enterDrugID.text == "" {
            self.missingDataError = "The Drug ID field is empty and is required."
            self.dataErrorAlert("Ooops", error: missingDataError)
            blankData = 1
    } else { if enterPackageNumber.text == "" {
            self.missingDataError = "The Package Number field is empty and is required."
            self.dataErrorAlert("Ooops", error: missingDataError)
            blankData = 1
            }
    }
    }
        if blankData != 1 {
            //add code to pass data to next veiw controller
            //self.appIsWorking
            performSegueWithIdentifier("goToDispenseScreenThree", sender: self)
        }
    blankData = 0
}

似乎 dataErrorAlert 是一个 function,我猜你想显示 dataMissingAlert 那是一个 UIAlertController,试试这个:

self.presentViewController(dataMissingAlert, animated: true, completion: nil)

您可能应该尝试重命名您的警报或 function,因为您似乎都使用名称 dataErrorAlert,我通常会使用 dataErrorAlertController。 希望对您有所帮助!