博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS - UIActionSheet
阅读量:7067 次
发布时间:2019-06-28

本文共 7037 字,大约阅读时间需要 23 分钟。

前言

NS_CLASS_DEPRECATED_IOS(2_0, 8_3, "UIActionSheet is deprecated. Use UIAlertController with a         preferredStyle of UIAlertControllerStyleActionSheet instead") __TVOS_PROHIBITED    @interface UIActionSheet : UIView        @available(iOS, introduced=2.0, deprecated=8.3, message="UIActionSheet is deprecated. Use         UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead")    public class UIActionSheet : UIView
  • 按钮的 index 按照 otherButton、cancelButton、addButtonWith 的顺序依次类推,起始值为 0。

  • ActionSheet 也可以设置 title 属性作为提示信息,一般不设置 title 看着会舒服一些。

  • ActionSheet 显示的时候调用的是 showInView。如果是在工具条或标签条中需要使用专门提供的其它方法。
    • 工具条的情况下 [actionSheet showFromToolbar:self.navigationController.toolbar];
    • 标签条的情况下 [actionSheet showFromTabBar:self.tabBar];

1、UIActionSheet 的创建

  • Objective-C

    • 创建时直接添加按钮等信息

      // 设置代理时,需遵守协议 
      UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"请选择" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"destructive" otherButtonTitles:@"动作 1", @"动作 2", @"动作 3", nil]; // 将 actionSheet 添加到 view [actionSheet showInView:self.view];
    • 先创建,后添加按钮等信息

      // 设置代理时,需遵守协议 
      UIActionSheet *actionSheet = [[UIActionSheet alloc] init]; actionSheet.title = @"请选择"; [actionSheet addButtonWithTitle:@"取消"]; [actionSheet addButtonWithTitle:@"动作 1"]; [actionSheet addButtonWithTitle:@"动作 2"]; [actionSheet addButtonWithTitle:@"动作 3"]; actionSheet.cancelButtonIndex = 0; actionSheet.delegate = self; // 将 actionSheet 添加到 view [actionSheet showInView:self.view];
  • Swift

    • 创建时直接添加按钮等信息

      // 设置代理时,需遵守协议 UIActionSheetDelegate    let actionSheet:UIActionSheet = UIActionSheet(title: "请选择",                                                delegate: self,                                       cancelButtonTitle: "取消",                                  destructiveButtonTitle: "destructive",                                      otherButtonTitles: "动作 1", "动作 2", "动作 3")    // 将 actionSheet 添加到 view    actionSheet.showInView(self.view)
    • 先创建,后添加按钮等信息

      // 设置代理时,需遵守协议 UIActionSheetDelegate    let actionSheet:UIActionSheet = UIActionSheet()    actionSheet.title = "请选择"    actionSheet.addButtonWithTitle("取消")    actionSheet.addButtonWithTitle("动作 1")    actionSheet.addButtonWithTitle("动作 2")    actionSheet.addButtonWithTitle("动作 3")    actionSheet.cancelButtonIndex = 0    actionSheet.delegate = self    // 将 actionSheet 添加到 view    actionSheet.showInView(self.view)

2、UIActionSheet 的设置

  • Objective-C

    // 设置样式    /*        // take appearance from toolbar style otherwise uses 'default'        UIActionSheetStyleAutomatic        = -1,        UIActionSheetStyleDefault          = UIBarStyleDefault,        UIActionSheetStyleBlackTranslucent = UIBarStyleBlackTranslucent,        UIActionSheetStyleBlackOpaque      = UIBarStyleBlackOpaque ,    */    actionSheet.actionSheetStyle = UIActionSheetStyleDefault;    // 设置标题    actionSheet.title = @"系统提示";    // 添加按钮    /*        需要放在 [actionSheet showInView:self]; 前才起作用    */    [actionSheet addButtonWithTitle:@"确定"];     // 设置最下边位置的按钮    /*        设置最下边位置的按钮:            大于 0 并且 小于等于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示        在最下边位置。            等于 0 或者 大于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示在最        下边位置,并且取消最下边一个按钮和上边按钮的间隔。    */    actionSheet.cancelButtonIndex = 4;    // 获取指定位置按钮的标题    NSString *buttonTitle = [actionSheet buttonTitleAtIndex:5];    // 获取按钮的个数,只读    NSInteger numberOfButtons = actionSheet.numberOfButtons;     // 获取除取消按钮外第一个按钮的索引,只读    NSInteger firstOtherButtonIndex = actionSheet.firstOtherButtonIndex;    // 获取 actionSheet 是否已经显示出来,只读    BOOL alertViewVisible = actionSheet.isVisible;    // 显示 actionSheet    [actionSheet showInView:self.view];    // 隐藏 actionSheet    [actionSheet dismissWithClickedButtonIndex:0 animated:YES];    // 设置代理,需遵守协议 
    actionSheet.delegate = self;
  • Swift

    // 设置样式    /*        case Automatic  // take appearance from toolbar style otherwise uses 'default'        case Default        case BlackTranslucent        case BlackOpaque    */    actionSheet.actionSheetStyle = .Default    // 设置标题    actionSheet.title = "系统提示"    // 添加按钮    /*        需要放在 [actionSheet showInView:self]; 前才起作用    */    actionSheet.addButtonWithTitle("确定")    // 设置最下边位置的按钮    /*        设置最下边位置的按钮:            大于 0 并且 小于等于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示        在最下边位置。            等于 0 或者 大于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示在最        下边位置,并且取消最下边一个按钮和上边按钮的间隔。    */    actionSheet.cancelButtonIndex = 4    // 获取指定位置按钮的标题    let buttonTitle:String? = actionSheet.buttonTitleAtIndex(5)    // 获取按钮的个数,只读    let numberOfButtons:NSInteger = actionSheet.numberOfButtons     // 获取除取消按钮外第一个按钮的索引,只读    let firstOtherButtonIndex:NSInteger = actionSheet.firstOtherButtonIndex    // 获取 actionSheet 是否已经显示出来,只读    let alertViewVisible:Bool = actionSheet.visible    // 显示 actionSheet    actionSheet.showInView(self.view)    // 隐藏 actionSheet    actionSheet.dismissWithClickedButtonIndex(0, animated: true)    // 设置代理,需遵守协议 UIActionSheetDelegate    actionSheet.delegate = self

3、UIActionSheetDelegate 的协议方法

  • 需遵守协议 UIActionSheetDelegate,并设置代理

  • Objective-C

    // 将要显示,操作表显示前被调用    - (void)willPresentActionSheet:(UIActionSheet *)actionSheet {    }    // 已经显示,操作表显示后被调用    - (void)didPresentActionSheet:(UIActionSheet *)actionSheet {    }    // 将要结束选择那个按钮,操作表关闭前被调用    - (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex {    }    // 已经结束了选择那个按钮,操作表关闭后被调用,操作表显示中应用程序进入睡眠状态时也会被调用    -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {    }    // 点击了那个按钮,触摸操作表中的任意按钮时被调用,比 willDismissWithButtonIndex 先被调用    - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {        // 按钮的 index 按照 otherButton、cancelButton、addButtonWith 的顺序依次类推    }    // 强制关闭,操作表显示中强制关闭时被调用,例如操作表显示时应用程序突然关闭等场所    -(void)actionSheetCancel:(UIActionSheet *)actionSheet {    }
  • Swift

    // 将要显示,操作表显示前被调用    func willPresentActionSheet(actionSheet: UIActionSheet) {    }    // 已经显示,操作表显示后被调用    func didPresentActionSheet(actionSheet: UIActionSheet) {    }    // 将要结束选择那个按钮,操作表关闭前被调用    func actionSheet(actionSheet: UIActionSheet, willDismissWithButtonIndex buttonIndex: Int) {    }    // 已经结束了选择那个按钮,操作表关闭后被调用,操作表显示中应用程序进入睡眠状态时也会被调用    func actionSheet(actionSheet: UIActionSheet, didDismissWithButtonIndex buttonIndex: Int) {    }    // 点击了那个按钮,触摸操作表中的任意按钮时被调用,比 willDismissWithButtonIndex 先被调用    func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {        // 按钮的 index 按照 otherButton、cancelButton、addButtonWith 的顺序依次类推    }    // 强制关闭,操作表显示中强制关闭时被调用,例如操作表显示时应用程序突然关闭等场所    func actionSheetCancel(actionSheet: UIActionSheet) {    }

转载地址:http://waall.baihongyu.com/

你可能感兴趣的文章
组策略参考文档1-共享打印机
查看>>
Linux的包管理工具介绍
查看>>
程序员如何成为架构师
查看>>
fiddler抓包之关于connect连接
查看>>
MySQL,binlog2sql回滚操作测试
查看>>
CentOS7下yum安装Jenkins
查看>>
简练软考知识点整理-确认范围管理
查看>>
不懂这几点就落后了:Android、Python工程师必读!
查看>>
Werkzeug 教程
查看>>
内核参数优化
查看>>
用户,组和权限零碎知识
查看>>
计算机
查看>>
文件修改较优方式
查看>>
oracle导入导出exp,imp
查看>>
oracle check if the display variable is set
查看>>
一键部署Openstack R版
查看>>
《JAVA——帮你解决高并发秒杀》
查看>>
国家级期刊发表要求注意事项
查看>>
C文件操作
查看>>
观察转小写的操作-字符函数
查看>>