UIActionSheet with swift

后端 未结 5 1384
清酒与你
清酒与你 2021-02-20 15:07

I created an action sheet, but the problem is that the delegate method is not called

 myActionSheet = UIActionSheet()
        myActionSheet.addButtonWithTitle(\"         


        
相关标签:
5条回答
  • 2021-02-20 15:31

    Updated for Swift 3 :

    If you want to show/open UIActionSheet on Button click, used below simple and updated code in yourViewController:

    //Method Defination :

    func showPaymentModeActionSheet()  {
    
        // 1
        let optionMenu = UIAlertController(title: nil, message: "Choose Payment Mode", preferredStyle: .actionSheet)
    
        // 2
        let fullAction = UIAlertAction(title: "FULL", style: .default, handler: {
            (alert: UIAlertAction!) -> Void in
            self.mPaymentModeTextField.text = "FULL"
    
        })
        let addvanceAction = UIAlertAction(title: "ADVANCE", style: .default, handler: {
            (alert: UIAlertAction!) -> Void in
            self.mPaymentModeTextField.text = "ADVANCE"
        })
    
        //
        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: {
            (alert: UIAlertAction!) -> Void in
        })
    
    
        // 4
        optionMenu.addAction(fullAction)
        optionMenu.addAction(addvanceAction)
        optionMenu.addAction(cancelAction)
    
        // 5
        self.present(optionMenu, animated: true, completion: nil)
    }
    

    //Method Call :

    @IBAction func actionOnPaymentModeButton(_ sender: Any) {
        // open action sheet
        showPaymentModeActionSheet()
    }
    
    0 讨论(0)
  • 2021-02-20 15:32

    You never set the action sheet's delegate:

    myActionSheet = UIActionSheet()
    myActionSheet.delegate = self
    
    0 讨论(0)
  • 2021-02-20 15:32

    UIActionSheet in swift language :-

    Action Sheet with cancelButton and destructiveButton

    set the UIActionSheetDelegate.

            let actionSheet = UIActionSheet(title: "ActionSheet", delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: "Done")
            actionSheet.showInView(self.view)
    

    Action Sheet with cancelButton , destructiveButton and otherButton

            let actionSheet = UIActionSheet(title: "ActionSheet", delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: "Done", otherButtonTitles: "Yes", "No")
            actionSheet.showInView(self.view)
    

    create the Action sheet function

    func actionSheet(actionSheet: UIActionSheet!, clickedButtonAtIndex buttonIndex: Int)
    {
        switch buttonIndex{
    
        case 0:
            NSLog("Done");
            break;
        case 1:
            NSLog("Cancel");
            break;
        case 2:
            NSLog("Yes");
            break;
        case 3:
            NSLog("No");
            break;
        default:
            NSLog("Default");
            break;
            //Some code here..
    
     }
    
    0 讨论(0)
  • 2021-02-20 15:32

    Show Action sheet in Swift 4 / 5

        @IBAction func showActionSheet(sender: AnyObject) {
    
        let alert = UIAlertController(title: "Title", message: "Please Select an Option", preferredStyle: .actionSheet)
    
        
        alert.addAction(UIAlertAction(title: "Edit", style: .default , handler:{ (UIAlertAction)in
            print("User click Edit button")
        }))
    
        alert.addAction(UIAlertAction(title: "Delete", style: .destructive , handler:{ (UIAlertAction)in
            print("User click Delete button")
        }))
        
        alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler:{ (UIAlertAction)in
            print("User click Dismiss button")
        }))
    
    
        self.present(alert, animated: true, completion: {
            print("completion block")
        })
    }
    

    0 讨论(0)
  • 2021-02-20 15:34

    UIActionSheet is deprecated since iOS8, I would recommend using UIAlertController if you don't have to support version below:

    private func presentSettingsActionSheet() {
      let settingsActionSheet: UIAlertController = UIAlertController(title:nil, message:nil, preferredStyle:UIAlertControllerStyle.ActionSheet)
      settingsActionSheet.addAction(UIAlertAction(title:"Send Feedback", style:UIAlertActionStyle.Default, handler:{ action in
        self.presentFeedbackForm()
      }))
      settingsActionSheet.addAction(UIAlertAction(title:"Tell Me a Joke!", style:UIAlertActionStyle.Default, handler:{ action in
        self.presentRandomJoke()
      }))
      settingsActionSheet.addAction(UIAlertAction(title:"Cancel", style:UIAlertActionStyle.Cancel, handler:nil))
      presentViewController(settingsActionSheet, animated:true, completion:nil)
    }
    

    Here is what it looks like presented:

                                         AlertViewController in Swift

    0 讨论(0)
提交回复
热议问题