zoukankan      html  css  js  c++  java
  • iOS

    前言

    	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) {
      
      	}
      
  • 相关阅读:
    【数学】Codeforces Round #470 (Div2) B
    【数学】At Coder 091 D题
    【2-SAT】The Ministers’ Major Mess UVALive – 4452
    【二分答案+2-SAT】Now or later UVALive
    【栈模拟dfs】Cells UVALive
    浅谈2-SAT(待续)
    【交叉染色法判断二分图】Claw Decomposition UVA
    【拓扑排序或差分约束】Guess UVALive
    【欧拉回路】UVA
    周总结8.15
  • 原文地址:https://www.cnblogs.com/QianChia/p/5750703.html
Copyright © 2011-2022 走看看