Where to find a clear explanation about swift alert (UIAlertController)?

后端 未结 3 1571
温柔的废话
温柔的废话 2021-01-31 19:01

Couldn\'t find a clear and informative explanation for this.

3条回答
  •  一生所求
    2021-01-31 19:53

    An instance of the UIAlertController can be presented modally on screen just as any other UIViewController using the presentViewController:animated:completion: method. What makes the UIAlertController instance differentiate between working as an ActionSheet or as an AlertView is the style parameter you pass when creating it.

    No more delegation

    If you have used a UIActionSheet or UIAlertView, you know that the way to get a callback from it is for a class (in most cases the ViewController) to implement the UIActionSheetDelegate or UIAlertViewDelegate protocol. There are some open source projects that replaced this delegation pattern with block based callbacks, but the official APIs were never updated. UIAlertController does not use delegation. Instead, it has a collection of UIAlertAction items, that use closures (or blocks if you are using Objective-C) to handle user input.

    For Action Sheet

    @IBAction func showActionSheet(sender: AnyObject) {
      //Create the AlertController
      let actionSheetController: UIAlertController = UIAlertController(title: "Action Sheet", message: "Swiftly Now! Choose an option!", preferredStyle: .ActionSheet)
    
      //Create and add the Cancel action
      let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
        //Just dismiss the action sheet
      }
      actionSheetController.addAction(cancelAction)
        //Create and add first option action
      let takePictureAction: UIAlertAction = UIAlertAction(title: "Take Picture", style: .Default) { action -> Void in
        //Code for launching the camera goes here
        }
      actionSheetController.addAction(takePictureAction)
      //Create and add a second option action
      let choosePictureAction: UIAlertAction = UIAlertAction(title: "Choose From Camera Roll", style: .Default) { action -> Void in
        //Code for picking from camera roll goes here
        }
      actionSheetController.addAction(choosePictureAction)
    
      //Present the AlertController
      self.presentViewController(actionSheetController, animated: true, completion: nil)
    }
    

    For AlertView with Text Field

    @IBAction func showAlert(sender: AnyObject) {
      //Create the AlertController
      let actionSheetController: UIAlertController = UIAlertController(title: "Alert", message: "Swiftly Now! Choose an option!", preferredStyle: .Alert)
    
      //Create and add the Cancel action
      let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
        //Do some stuff
        }
      actionSheetController.addAction(cancelAction)
        //Create and an option action
      let nextAction: UIAlertAction = UIAlertAction(title: "Next", style: .Default) { action -> Void in
        //Do some other stuff
        }
      actionSheetController.addAction(nextAction)
      //Add a text field
      actionSheetController.addTextFieldWithConfigurationHandler { textField -> Void in
           //TextField configuration
         textField.textColor = UIColor.blueColor()
       }
    
       //Present the AlertController
       self.presentViewController(actionSheetController, animated: true, completion: nil)
    }
    

提交回复
热议问题