Swift alert view with OK and Cancel: which button tapped?

前端 未结 6 774
耶瑟儿~
耶瑟儿~ 2021-01-30 01:16

I have an alert view in Xcode written in Swift and I\'d like to determine which button the user selected (it is a confirmation dialog) to do nothing or to execute something.

相关标签:
6条回答
  • 2021-01-30 01:42

    You may want to consider using SCLAlertView, alternative for UIAlertView or UIAlertController.

    UIAlertController only works on iOS 8.x or above, SCLAlertView is a good option to support older version.

    github to see the details

    example:

    let alertView = SCLAlertView()
    alertView.addButton("First Button", target:self, selector:Selector("firstButton"))
    alertView.addButton("Second Button") {
        print("Second button tapped")
    }
    alertView.showSuccess("Button View", subTitle: "This alert view has buttons")
    
    0 讨论(0)
  • 2021-01-30 01:45

    If you are using iOS8, you should be using UIAlertController — UIAlertView is deprecated.

    Here is an example of how to use it:

    var refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.Alert)
    
    refreshAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
      print("Handle Ok logic here")
      }))
    
    refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
      print("Handle Cancel Logic here")
      }))
    
    presentViewController(refreshAlert, animated: true, completion: nil)
    

    As you can see the block handlers for the UIAlertAction handle the button presses. A great tutorial is here (although this tutorial is not written using swift): http://hayageek.com/uialertcontroller-example-ios/

    Swift 3 update:

    let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.alert)
    
    refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
        print("Handle Ok logic here")
    }))
    
    refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
        print("Handle Cancel Logic here")
    }))
    
    present(refreshAlert, animated: true, completion: nil)
    

    Swift 5 update:

    let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.alert)
    
    refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
          print("Handle Ok logic here")
    }))
    
    refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
          print("Handle Cancel Logic here")
    }))
    
    present(refreshAlert, animated: true, completion: nil)
    

    Swift 5.3 update:

    let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertController.Style.alert)
    
    refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
          print("Handle Ok logic here")
    }))
    
    refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
          print("Handle Cancel Logic here")
    }))
    
    present(refreshAlert, animated: true, completion: nil)
    
    0 讨论(0)
  • 2021-01-30 01:46

    Updated for swift 3:

    // function defination:

    @IBAction func showAlertDialog(_ sender: UIButton) {
            // Declare Alert
            let dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to Logout?", preferredStyle: .alert)
    
            // Create OK button with action handler
            let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in
                 print("Ok button click...")
                 self.logoutFun()
            })
    
            // Create Cancel button with action handlder
            let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in
                print("Cancel button click...")
            }
    
            //Add OK and Cancel button to dialog message
            dialogMessage.addAction(ok)
            dialogMessage.addAction(cancel)
    
            // Present dialog message to user
            self.present(dialogMessage, animated: true, completion: nil)
        }
    

    // logoutFun() function definaiton :

    func logoutFun()
    {
        print("Logout Successfully...!")
    }
    
    0 讨论(0)
  • 2021-01-30 01:49

    small update for swift 5:

    let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertController.Style.alert)
    
        refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
              print("Handle Ok logic here")
        }))
    
        refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
              print("Handle Cancel Logic here")
        }))
    
        self.present(refreshAlert, animated: true, completion: nil)
    
    0 讨论(0)
  • 2021-01-30 02:02

    You can easily do this by using UIAlertController

    let alertController = UIAlertController(
           title: "Your title", message: "Your message", preferredStyle: .alert)
    let defaultAction = UIAlertAction(
           title: "Close Alert", style: .default, handler: nil)
    //you can add custom actions as well 
    alertController.addAction(defaultAction)
    
    present(alertController, animated: true, completion: nil)
    

    .

    Reference: iOS Show Alert

    0 讨论(0)
  • 2021-01-30 02:04
    var refreshAlert = UIAlertController(title: "Log Out", message: "Are You Sure to Log Out ? ", preferredStyle: UIAlertControllerStyle.Alert)
    
    refreshAlert.addAction(UIAlertAction(title: "Confirm", style: .Default, handler: { (action: UIAlertAction!) in
        self.navigationController?.popToRootViewControllerAnimated(true)
    }))
    
    refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in
    
        refreshAlert .dismissViewControllerAnimated(true, completion: nil)
    
    
    }))
    
    presentViewController(refreshAlert, animated: true, completion: nil)
    
    0 讨论(0)
提交回复
热议问题