我在主视图控制器中的功能无效

时间:2015-10-27 21:18:16

标签: xcode swift

我正在尝试使用我在主viewController中编写的函数,就是这样。

func displayAlert(title: String, message: String)
{
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)

    alert.addAction((UIAlertAction(title: "Ok", style: .Default, handler:
        { (action) -> Void in
            self .dismissViewControllerAnimated(true, completion: nil)
    })))

    self.presentViewController(alert, animated: true, completion: nil)
} 

我试图在其他viewController调用viewControllerRegistro上使用它,由于某种原因无效。这就是......

@IBAction func signUp(sender: AnyObject)
{
    //checar que el usuario copero al poner su correo electronico y su contraseña
    if usernameRegistro.text == "" || correoRegistro.text == "" || contraseñaRegistro.text == ""
    {
        ViewController().displayAlert("Informando Error", message: "Porfavor completa los cuadros de registro")
    }

任何帮助? 我使用xcode 7.0 beta 6和swift 2

1 个答案:

答案 0 :(得分:0)

ViewController()创建一个新的ViewController实例。该视图控制器不是视图层次结构的一部分(因为您刚刚创建它,而无需在任何地方添加它)。

您必须在当前可见的视图控制器上调用该方法。因此,该函数不应该是MainViewController类的一部分。它应该是需要它的ViewController类的一部分。或者,如果您在多个视图类中需要它,则可以将该函数添加到UIViewController的扩展名:

extension UIViewController {
    func displayAlert(title: String, message: String) {
        let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction((UIAlertAction(title: "Ok", style: .Default, handler:
            { (action) -> Void in
                self .dismissViewControllerAnimated(true, completion: nil)
        })))
        presentViewController(alert, animated: true, completion: nil)
    }
}

使用此扩展程序,您可以在任何displayAlert和UIViewController子类上调用UIViewController