2015-11-09 3 views
-1

Я получаю эту ошибку после обновления Swift2, не уверен, что мне не хватает. Вот мой код: ошибка происходит во что угодно, что имеет вар предупреждение = UIAlertController и любая помощь приветствуетсяне может вызывать инициализатор для типа 'UIAlertController' с типом списка аргументов '(title: string, message:

Благодаря

// Validate the text fields 
    if username!.characters.count < 5 { 
     var alert = UIAlertController(title: "Invalid", message: "Username must be greater than 5 characters", delegate: self, cancelButtonTitle: "OK") 
     alert.show() 

    } else if password!.characters.count < 8 { 
     var alert = UIAlertController(title: "Invalid", message: "Password must be greater than 8 characters", delegate: self, cancelButtonTitle: "OK") 
     alert.show() 

    } else if email!.characters.count < 8 { 
     var alert = UIAlertController(title: "Invalid", message: "Please enter a valid email address", delegate: self, cancelButtonTitle: "OK") 
     alert.show() 

    } else { 
     // Run a spinner to show a task in progress 
     var spinner: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0, 0, 150, 150)) as UIActivityIndicatorView 
     spinner.startAnimating() 

     var newUser = PFUser() 

     newUser.username = username 
     newUser.password = password 
     newUser.email = finalEmail 

     // Sign up the user asynchronously 
     newUser.signUpInBackgroundWithBlock({ (succeed, error) -> Void in 

      // Stop the spinner 
      spinner.stopAnimating() 
      if ((error) != nil) { 
       var alert = UIAlertController(title: "Error", message: "\(error)", delegate: self, cancelButtonTitle: "OK") 
       alert.show() 

      } else { 
       var alert = UIAlertController(title: "Success", message: "Signed Up", delegate: self, cancelButtonTitle: "OK") 
       alert.show() 
       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Home") 
        self.presentViewController(viewController, animated: true, completion: nil) 
       }) 
      } 
     }) 
    } 
} 
+0

не используют все эти теги. Это либо связано с xcode, либо с языком, редко с тем и другим. Это также примерно одна версия языка, не все из них. –

ответ

0

инициализатора для UIAlertController выглядит следующим образом:.

var alert = UIAlertController(title: "Title", message: "Message", preferredStyle: UIAlertControllerStyle.Alert) 

UIAlertController представлена ​​следующим образом:

viewController.presentViewController(alert, animated: true, completion: {() -> Void in 
    //something when the alert has been clicked 
}) 

Optionals разворачиваются так:

guard let unWrappedUserName = username else { 
    return 
} 

if unWrappedUserName.characters.count < 5 { 

Вы можете добавить действия в Алерт, как это:

var cancelAction = UIAlertAction(title: "Alert Option 1", style: UIAlertActionStyle.Cancel, handler: { (action) -> Void in 
    // some stuff when they cancel 
}) 

var stuffAction = UIAlertAction(title: "Alert Option 2", style: UIAlertActionStyle.Default, handler: { (action) -> Void in 
    // some other stuff 
}) 

myAlertController.addAction(cancelAction) 
myAlertController.addAction(stuffAction) 
+0

Я вижу, что они там делали. Спасибо Menke – Birdman3000

+0

@ Birdman3000 обновлен с ответом на вопрос, который вы собираетесь задать через 10 минут. Не забывайте поднимать и приветствовать SO –

0

Используйте UIAlertViewController как задумано с таможней UIAlertAction

let alert = UIAlertController(title: "Success", message: "Signed Up", preferredStyle: .Alert) 

let cancelAction = UIAlertAction(title: "OK", style: .Cancel) { action in 
     //Do whatever you want 
} 
alert.addAction(cancelAction) 

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

Вы можете найти довольно аккуратный пример в Swift 2 Blueprints Сесил Коста, внутри подглавы: Создание хелперы

extension UIViewController { 
    func displayError(message:String){ 
     let alertController = UIAlertController(title: "Error", message: message, preferredStyle: .Alert) 
     let alertAction = UIAlertAction(title: "Dismiss", style: .Cancel) { _ in 
      self.dismissViewControllerAnimated(true, completion:nil) 
     } 
     alertController.addAction(alertAction) 
     self.presentViewController(alertController, animated: true, completion: nil) 
    } 
}