代码之家  ›  专栏  ›  技术社区  ›  LeeMobile

创建类似于邮件应用程序菜单的iPhone弹出菜单

  •  21
  • LeeMobile  · 技术社区  · 17 年前

    UIActionSheet example

    7 回复  |  直到 10 年前
        1
  •  14
  •   Mike    17 年前

    enter image description here

    UIAlertController UIAlertControllerStyle.ActionSheet UIActionSheet 已弃用。

    class ViewController: UIViewController {
        
        @IBOutlet weak var showActionSheetButton: UIButton!
        
        @IBAction func showActionSheetButtonTapped(sender: UIButton) {
            
            // Create the action sheet
            let myActionSheet = UIAlertController(title: "Color", message: "What color would you like?", preferredStyle: UIAlertController.Style.actionSheet)
            
            // blue action button
            let blueAction = UIAlertAction(title: "Blue", style: UIAlertAction.Style.default) { (action) in
                print("Blue action button tapped")
            }
            
            // red action button
            let redAction = UIAlertAction(title: "Red", style: UIAlertAction.Style.default) { (action) in
                print("Red action button tapped")
            }
            
            // yellow action button
            let yellowAction = UIAlertAction(title: "Yellow", style: UIAlertAction.Style.default) { (action) in
                print("Yellow action button tapped")
            }
            
            // cancel action button
            let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) { (action) in
                print("Cancel action button tapped")
            }
            
            // add action buttons to action sheet
            myActionSheet.addAction(blueAction)
            myActionSheet.addAction(redAction)
            myActionSheet.addAction(yellowAction)
            myActionSheet.addAction(cancelAction)
            
            // present the action sheet
            self.present(myActionSheet, animated: true, completion: nil)
        }
    }
    

    还需要帮助吗?观看此视频教程。我就是这样学会的。

        3
  •  20
  •   Cœur Gustavo Armenta    9 年前

    查看苹果网站上的UICatalog示例。“警报”部分有如何使用UIActionSheet完成您要做的事情的示例。

        4
  •  9
  •   C0L.PAN1C    10 年前

    首先,您需要将UIActionSheetDelegate添加到ViewController.h文件中。

      UIActionSheet *popup = [[UIActionSheet alloc] initWithTitle:@"Select Sharing option:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:
                            @"Share on Facebook",
                            @"Share on Twitter",
                            @"Share via E-mail",
                            @"Save to Camera Roll",
                            @"Rate this App",
                            nil];
       popup.tag = 1;
      [popup showInView:self.view];
    

    然后你必须处理每一个电话。

    - (void)actionSheet:(UIActionSheet *)popup clickedButtonAtIndex:(NSInteger)buttonIndex {
    
      switch (popup.tag) {
        case 1: {
            switch (buttonIndex) {
                case 0:
                    [self FBShare];
                    break;
                case 1:
                    [self TwitterShare];
                    break;
                case 2:
                    [self emailContent];
                    break;
                case 3:
                    [self saveContent];
                    break;
                case 4:
                    [self rateAppYes];
                    break;
                default:
                    break;
            }
            break;
        }
        default:
            break;
     }
    }
    

    https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIAlertController_class/index.html

        5
  •  5
  •   Stunner    10 年前

        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Directions"
                                                                               message:@"Select mode of transportation:"
                                                                        preferredStyle:UIAlertControllerStyleActionSheet];
        UIAlertAction *drivingAction = [UIAlertAction actionWithTitle:@"Driving" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            // this block runs when the driving option is selected
        }];
        UIAlertAction *walkingAction = [UIAlertAction actionWithTitle:@"Walking" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            // this block runs when the walking option is selected
        }];
        UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
        [alert addAction:drivingAction];
        [alert addAction:walkingAction];
        [alert addAction:defaultAction];
        [self presentViewController:alert animated:YES completion:nil];
    
        6
  •  2
  •   Durai Amuthan.H    9 年前

    1. UIActionSheetDelegate

    2. let sheet: UIActionSheet = UIActionSheet()
      
      sheet.addButtonWithTitle("button 1")
      sheet.addButtonWithTitle("button 2")
      sheet.addButtonWithTitle("button 3")
      sheet.addButtonWithTitle("Cancel")
      sheet.cancelButtonIndex = sheet.numberOfButtons - 1
      sheet.delegate = self
      sheet.showInView(self.view)
      
    3. func actionSheet(actionSheet: UIActionSheet!, clickedButtonAtIndex buttonIndex: Int){
      switch buttonIndex{
          case 0:
              NSLog("button1");
          case 1:
              NSLog("button2");
          case 2:
              NSLog("button3");
          case actionSheet.cancelButtonIndex:
              NSLog("cancel");
              break;
          default:
              NSLog("blub");
              break;
        }
      }
      
        7
  •  0
  •   User18474728    9 年前

    不管怎样。..我将编写旧版ActionSheet和更新版ActionSheet。

        UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"Action Sheet" message:@"writeMessageOrsetAsNil" preferredStyle:UIAlertControllerStyleActionSheet];
    
        UIAlertAction* actionSheet01 = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                                   handler:^(UIAlertAction * action) {  NSLog(@"OK click");}];
    
        UIAlertAction* actionSheet02 = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleDefault
                                                                     handler:^(UIAlertAction * action) {NSLog(@"OK click");}];
    
        UIAlertAction* actionSheet03 = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel
                                                                     handler:^(UIAlertAction * action) {
                                                                         NSLog(@"Cancel click");}];
    
        [browserAlertController addAction:actionSheet01];
        [browserAlertController addAction:actionSheet02];
        [browserAlertController addAction:actionSheet03];
    
        [self presentViewController:browserAlertController animated:YES completion:nil];
    

    UIActionSheet *actionSheet= [[UIActionSheet alloc] initWithTitle:@"Select Sharing option:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@“OK”, @“NO”,@“Cancel”,
                            nil];
      actionSheet.tag = 100;
      [actionSheet showInView:self.view];
    
    - (void)actionSheet:(UIActionSheet *)actionShee clickedButtonAtIndex:(NSInteger)buttonIndex {
    
      if( actionSheet.tag  == 100){
            switch (buttonIndex) {
                case 0:
                    [self doSomething];
                    break;
                case 1:
                    [self doAnything];
                    break;
                case 2:
                    [self doNothing];
                    break;
                 default:
                    break;
            }
            break;
        }
    
    }