前言

	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

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

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

      	// 设置代理时,需遵守协议 <UIActionSheetDelegate>
      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]; // 设置代理,需遵守协议 <UIActionSheetDelegate>
    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) { }

iOS - UIActionSheet的更多相关文章

  1. IOS UIActionSheet的使用方法

    在IOS的用户接口向导中,苹果提供了另外一种显示警告框的手法,叫做UIActionSheet.它和UIAlertView比起来不会显得过于急切和紧张.而是很温和地在继续流程之前给用户提供了诸多选择. ...

  2. IOS UIActionSheet(底部 弹出框的使用)

    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"确定要注销?" delegate:self cancel ...

  3. Android开源项目库汇总

    最近做了一个Android开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. 抽 ...

  4. GitHub上受欢迎的Android UI Library

    GitHub上受欢迎的Android UI Library 内容 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayout 图标 下拉刷新 Vi ...

  5. Android UI相关开源项目库汇总

    最近做了一个Android UI相关开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个st ...

  6. GitHub 上受欢迎的 Android UI Library 整理二

    通知 https://github.com/Tapadoo/Alerter ★2528 - 克服Toast和Snackbar的限制https://github.com/wenmingvs/Notify ...

  7. 最新最全的 Android 开源项目合集

    原文链接:https://github.com/opendigg/awesome-github-android-ui 在 Github 上做了一个很新的 Android 开发相关开源项目汇总,涉及到 ...

  8. wesome-android

    awesome-android Introduction android libs from github System requirements Android Notice If the lib ...

  9. GitHub 上受欢迎的 Android UI Library整理

    https://github.com/Tapadoo/Alerter ★2528 - 克服Toast和Snackbar的限制 https://github.com/wenmingvs/NotifyUt ...

随机推荐

  1. XCode5 真机调试及发布应用

    一.XCODE 真机测试 Xcode5已经很智能,只需生成一个开发证书,安装后,插入设备会自动添加,注意,当Mac系统升级后,证书需要重新生成. 证书生成步骤: 1.生成 CertificateSig ...

  2. JavaEE基础(一)

    1.计算机基础知识(计算机概述) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. ...

  3. 如何在ecshop订单中显示客户给商家的留言

    ecshop后台->订单管理->订单打印 在你想要加入的位置加入 客户给商家的留言:{$order.postscript} ok啦,很简单咯

  4. C++11 std::function用法

    转自 http://www.hankcs.com/program/cpp/c11-std-function-usage.html function可以将普通函数,lambda表达式和函数对象类统一起来 ...

  5. SDUT 2411:Pixel density

    Pixel density Time Limit: 1000MS Memory limit: 65536K 题目描述 Pixels per inch (PPI) or pixel density is ...

  6. MultiSelectComboBox(二)

    1. MainWindow.xaml <Window x:Class="MultiSelectDemo.MainWindow"         xmlns="htt ...

  7. angular 控制器之间的通信

    1, 利用作用域的继承方式 由于作用域的继承是基于js的原型继承方式,所以这里分为两种情况,当作用域上面的值为基本类型的时候,修改父作用域上面的值会 影响到子作用域,反之,修改子作用域只会影响子作用域 ...

  8. C/C++ 调用qsort/sort 对字符数组排序的cmp函数写法

    这个问题屡次碰到解决之后再次遇到又忘记怎么弄了,这次打算彻底搞清楚. ·C 首先对所谓字符数组的排序应该是对(char)*a[]数组而非(char)a[][]进行的排序,后者是无法直接调用qsort实 ...

  9. Poj(2253),Dijkstra松弛条件的变形

    题目链接:http://poj.org/problem?id=2253 题意: 给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通 ...

  10. http模式

    http遵守请求响应模式: 请求: 请求行:HTTP方法-请求的URL-HTTP版本 请求行 空行 消息体 响应: 状态行:HTTP版本-响应码-响应描述 响应头 空行 消息体 其他的重点: http ...