'UIAlertView'在iOS 9.0中已弃用。使用UIAlertController而不是UIAlertControllerStyleAlert的preferredStyle

时间:2016-04-04 05:14:32

标签: ios swift uialertview uialertcontroller

我看到了更多答案,但没有任何帮助。这是我的旧警报和行动

override func viewWillAppear(animated: Bool) {
    if Reachability.isConnectedToNetwork() == true {
        print("internet connection ok")
    } else 
    {
        print("internet not ok")
        let alertView: UIAlertView = UIAlertView(title: "Alert ", message: "connect to internet", delegate: self, cancelButtonTitle: "settings", otherButtonTitles: "cancel")
        alertView.show()
        return       
    }       
}

func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int)
{
    if buttonIndex == 0 {
        //This will open ios devices wifi settings
        UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root")!)
    }
    else if buttonIndex == 1
    {
        //TODO for cancel
        exit(0) 
    }
}

因为我正在收到警告:

  

'UIAlertView'在iOS 9.0中已弃用。使用UIAlertController和   而不是UIAlertControllerStyleAlert的preferredStyle

我试过了:

let alert = UIAlertController(title: "Alert", message: "My Alert for test", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Default, handler: {    (action:UIAlertAction!) in 
        print("you have pressed the Cancel button")
    }))
self.presentViewController(alert, animated: true, completion: nil)

但是要添加两个按钮并添加按钮的索引路径按下方法链接我的旧代码,我无法做到这一点。我的uialert按钮没有任何动作,

请帮帮我,我怎么能删除那些警告并用我的两个按钮动作重新编码我的Uialert。

我是swift的新手。你的帮助会很有用。谢谢!

8 个答案:

答案 0 :(得分:71)

请参阅UIAlertController中的此代码破坏性和确定按钮:

let alertController = UIAlertController(title: "Destructive", message: "Simple alertView demo with Destructive and Ok.", preferredStyle: UIAlertControllerStyle.alert) //Replace UIAlertControllerStyle.Alert by UIAlertControllerStyle.alert
let DestructiveAction = UIAlertAction(title: "Destructive", style: UIAlertActionStyle.Destructive) {
    (result : UIAlertAction) -> Void in
    print("Destructive")
}

// Replace UIAlertActionStyle.Default by UIAlertActionStyle.default
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) {
    (result : UIAlertAction) -> Void in
    print("OK")
}

alertController.addAction(DestructiveAction)
alertController.addAction(okAction)
self.presentViewController(alertController, animated: true, completion: nil)

斯威夫特3:

let alertController = UIAlertController(title: "Destructive", message: "Simple alertView demo with Destructive and Ok.", preferredStyle: UIAlertControllerStyle.alert) //Replace UIAlertControllerStyle.Alert by UIAlertControllerStyle.alert

let DestructiveAction = UIAlertAction(title: "Destructive", style: UIAlertActionStyle.destructive) {
                        (result : UIAlertAction) -> Void in
    print("Destructive")
}

                    // Replace UIAlertActionStyle.Default by UIAlertActionStyle.default

let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) {
                        (result : UIAlertAction) -> Void in
    print("OK")
}

alertController.addAction(DestructiveAction)
alertController.addAction(okAction)
self.present(alertController, animated: true, completion: nil)

请参阅具有破坏性和确定按钮的警报:

enter image description here

答案 1 :(得分:15)

Swift 3 中,您可以写下:

let alertController = UIAlertController(title: "Title", message: "This is my text", preferredStyle: UIAlertControllerStyle.alert)

let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default)  
{ 
     (result : UIAlertAction) -> Void in
      print("You pressed OK")
}
alertController.addAction(okAction)
self.present(alertController, animated: true, completion: nil)

答案 2 :(得分:10)

对于基本警报消息,我喜欢在UIViewController上使用扩展名:

extension UIViewController {
func alertMessageOk(title: String, message: String) {
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
    let action = UIAlertAction(title: "Ok", style: .default, handler: nil)
    alert.addAction(action)
    present(alert, animated: true, completion: nil)
   }
}

使用方法: self.alertMessageOk(title: "Test Title", message: "Test message")

答案 3 :(得分:2)

Swift 3

    // Create message
     let alertController = UIAlertController(title: "Title",
                                           message: "Message",
                                    preferredStyle: .actionSheet)

    // Clear Action
    let clearAction = UIAlertAction(title: "Clear",
                                    style: .destructive,
                                  handler: { (action:UIAlertAction!) in
                         print ("clear")
    })
    alertController.addAction(clearAction)

    // Cancel
    let cancelAction = UIAlertAction(title: "Cancel",
                                     style: .cancel,
                                   handler: { (action:UIAlertAction!) in
                                print ("Cancel")
    })
    alertController.addAction(cancelAction)

    // Present Alert
    self.present(alertController,
                 animated: true,
                 completion:nil)

答案 4 :(得分:1)

  UIAlertController *AC = UIAlertController.alertControllerWithTitle("Title",message:"Message",preferredStyle:UIAlertControllerStyleAlert)

  UIAlertAction *ActionOne = [UIAlertAction actionWithTitle:"ActionOne" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSLog("ActionOne")
} ]

  UIAlertAction *ActionTwo = [UIAlertAction actionWithTitle:"ActionTwo" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSLog("ActionTwo")
} ]
AC.addAction(ActionOne)
AC.addAction(ActionTwo)
self.presentViewController(AC,animated:true,completion:nil)

答案 5 :(得分:0)

试试这段代码。 实施例

 let actionSheetController: UIAlertController = UIAlertController(title: "Are you sure?", message: "", preferredStyle: .Alert)
 let cancelAction: UIAlertAction = UIAlertAction(title: "NO", style: .Cancel) { action -> Void in
                 //Do your task
  }
  actionSheetController.addAction(cancelAction)
  let nextAction: UIAlertAction = UIAlertAction(title: "YES", style: .Default) { action -> Void in
           //Do your task             //NSUserDefaults.standardUserDefaults().removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!)
      //                  NSUserDefaults.standardUserDefaults().synchronize()
 }
 actionSheetController.addAction(nextAction)
 self.presentViewController(actionSheetController, animated: true, completion: nil)

答案 6 :(得分:0)

此代码将有所帮助

let alertController = UIAlertController(title: "Default AlertController", message: "A standard alert", preferredStyle: .Alert)

let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) 
{ 
   (action:UIAlertAction!) in
   print("you have pressed the Cancel button");
}
alertController.addAction(cancelAction)

let OKAction = UIAlertAction(title: "OK", style: .Default) 
{ 
  (action:UIAlertAction!) in
                print("you have pressed OK button");
}
alertController.addAction(OKAction)

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

答案 7 :(得分:0)

我从这个链接得到了这个答案我觉得它对你有用

How to add an action to a UIAlertView button using Swift iOS

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

// Create the actions
var okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) {
    UIAlertAction in
    NSLog("OK Pressed")
}
var cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) {
    UIAlertAction in
    NSLog("Cancel Pressed")
}

// Add the actions
alertController.addAction(okAction)
alertController.addAction(cancelAction)

// Present the controller
self.presentViewController(alertController, animated: true, completion: nil)