`
stephen830
  • 浏览: 3011632 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

iOS学习之UIActionSheet的使用

 
阅读更多

 

iOS学习之UIActionSheet的使用

转载自http://blog.csdn.net/totogo2010/article/details/7618891

 

 

UIActionSheet是在iOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件。

为了快速完成这例子,我们打开Xcode 4.3.2, 先建立一个single view application。然后再xib文件添加一个button,用来弹出sheet view。

1、首先在.h文件中实现协议

加代码的地方在@interface那行的最后添加<UIActionSheetDelegate>,协议相当于java里的接口,实现协议里的方法。

 
  1. @interface sheetviewViewController : UIViewController<UIActionSheetDelegate>  
  2.   
  3. @end  

 

2、添加button,命名button为showSheetView.

3、为button建立Action映射,映射到.h文件上,事件类型为Action ,命名为showSheet。

4、在.m文件上添加点击事件代码

图的效果是这样的:



 

 

 
  1. - (IBAction)showSheet:(id)sender {  
  2.     UIActionSheet *actionSheet = [[UIActionSheet alloc]  
  3.                                   initWithTitle:@"title,nil时不显示"  
  4.                                   delegate:self  
  5.                                   cancelButtonTitle:@"取消"  
  6.                                   destructiveButtonTitle:@"确定"  
  7.                                   otherButtonTitles:@"第一项", @"第二项",nil];  
  8.     actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;  
  9.     [actionSheet showInView:self.view];  
  10. }  

actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;//设置样式

参数解释:   

cancelButtonTitle  destructiveButtonTitle是系统自动的两项。

otherButtonTitles是自己定义的项,注意,最后一个参数要是nil。

 

[actionSheet showInView:self.view];这行语句的意思是在当前view显示Action sheet。当然还可以用其他方法显示Action sheet。

对应上面的图和代码,一目了然了把

5、接下来我们怎么相应Action Sheet的选项的事件呢?

实现协议里的方法。为了能看出点击Action sheet每一项的效果,我们加入UIAlertView来做信息显示。下面是封装的一个方法,传入对应的信息,在UIAlertView显示对应的信息。

 
  1. -(void)showAlert:(NSString *)msg {  
  2.     UIAlertView *alert = [[UIAlertView alloc]  
  3.                           initWithTitle:@"Action Sheet选择项"  
  4.                           message:msg  
  5.                           delegate:self  
  6.                           cancelButtonTitle:@"确定"  
  7.                           otherButtonTitles: nil];  
  8.     [alert show];  
  9. }  

那相应被Action Sheet选项执行的代码如下:

 
  1. (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex  
  2. {  
  3.     if (buttonIndex == 0) {  
  4.         [self showAlert:@"确定"];  
  5.     }else if (buttonIndex == 1) {  
  6.         [self showAlert:@"第一项"];  
  7.     }else if(buttonIndex == 2) {  
  8.         [self showAlert:@"第二项"];  
  9.     }else if(buttonIndex == 3) {  
  10.         [self showAlert:@"取消"];  
  11.     }   
  12.   
  13. }  
  14. - (void)actionSheetCancel:(UIActionSheet *)actionSheet{    
  15.   
  16. }    
  17. -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{    
  18.   
  19. }    
  20. -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex{    
  21.   
  22. }  

可以看到 buttonIndex 是对应的项的索引。

看到那个红色的按钮没?那是ActionSheet支持的一种所谓的销毁按钮,对某户的某个动作起到警示作用,

比如永久性删除一条消息或图像时。如果你指定了一个销毁按钮他就会以红色高亮显示:

actionSheet.destructiveButtonIndex=1;  

与导航栏类似,操作表单也支持三种风格 

UIActionSheetStyleDefault              //默认风格:灰色背景上显示白色文字   

UIActionSheetStyleBlackTranslucent     //透明黑色背景,白色文字   

UIActionSheetStyleBlackOpaque          //纯黑背景,白色文字  

用法:

 actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;//设置样式

我选sheet 里的第一项,显示如下:



 

 

6、注意事项

在开发过程中,发现有时候UIActionSheet的最后一项点击失效,点最后一项的上半区域时有效,这是在特定情况下才会发生,这个场景就是试用了UITabBar的时候才有。解决办法:

在 showView时这样使用,[actionSheet showInView:[UIApplication sharedApplication].keyWindow];或者[sheet showInView:[AppDelegate sharedDelegate].tabBarController.view];这样就不会发生遮挡现象了。

 

  • 大小: 107.9 KB
  • 大小: 136.2 KB
分享到:
评论

相关推荐

    ios-自定义UIActionSheet.zip

    通过这个自定义UIActionSheet示例,开发者可以学习到如何在iOS应用中创建更灵活、更具吸引力的弹出视图,提高用户体验。同时,这也是对原生控件进行扩展和定制的一个经典案例,有助于提升iOS开发技能。

    安卓IOS风格相关-模仿IOS里面的UIActionSheet控件.rar

    "安卓IOS风格相关-模仿IOS里面的UIActionSheet控件.rar"这个压缩包文件,显然提供了一种尝试在Android平台上实现类似iOS中UIActionSheet控件的方法。UIActionSheet是iOS系统中的一个组件,通常用于显示一系列可选...

    UIActionSheet

    在iOS开发中,UIActionSheet是苹果提供的一个控件,用于在用户界面中展示一系列..."SheetViewDemo"可能是实现和展示这些功能的代码实例,通过学习和分析这个项目,开发者可以更深入地理解和掌握ActionSheet的使用技巧。

    IOS应用源码——UIActionSheet 的美化效果.zip

    在iOS开发中,UIActionSheet是苹果提供...总之,这个源码示例是iOS开发者学习自定义UIActionSheet的一个宝贵资源,通过研究它,你可以掌握如何在不破坏系统一致性的同时,为用户提供更美观、更符合应用特色的操作提示。

    IOS应用源码——UIActionSheet 的美化效果.rar

    这可能包括使用`UIView`或`UIAlertController`(在iOS 8及以上版本推荐使用)来替代UIActionSheet,并自行实现弹出动画和交互逻辑。 2. **扩展UIActionSheet**:虽然UIActionSheet本身并不支持子类化,但可以通过...

    iOS开发6:UIActionSheet与UIAlertView

    在iOS开发中,UIActionSheet和UIAlertView是两种常用的用户交互组件,它们用于向用户提供警告、确认或选择...同时,随着iOS系统的更新,一些组件可能会被新的API替代,开发者需要不断学习和适应最新的开发工具和技术。

    ios应用源码之仿uialertview和uiactionsheet的一个效果 2018127

    标题“ios应用源码之仿uialertview和uiactionsheet的一个效果”所提及的,就是这样的一个自定义实现。 `UIAlertController`和`UIActionSheet`在iOS 8之后被引入,替代了之前的`UIAlertView`和`UIActionSheet`,因为...

    IOS源码应用Demo-UIActionSheet 的美化效果.zip

    综上所述,这个项目是一个适合iOS开发者学习和研究的资源,特别是对于那些想了解如何自定义和优化系统组件UIActionSheet外观的开发者。通过分析源码,你可以学习到如何处理视图控制器间的交互、自定义UI元素、响应...

    UIActionSheet示例代码

    在iOS开发中,UIActionSheet是用户界面中一个重要的组件,它用于展示一系列可供用户选择的选项,通常在用户需要做出决策或者执行某些...通过学习和分析这个示例,开发者可以更好地理解和掌握`UIActionSheet`的使用。

    IOS应用源码Demo-仿UIAlertView和UIActionSheet的一个效果-毕设学习.zip

    这个压缩包"IOS应用源码Demo-仿UIAlertView和UIActionSheet的一个效果-毕设学习.zip"提供了一个实例,帮助开发者了解如何在没有这些原生组件的情况下实现类似的功能。在iOS 8之后,UIAlertView和UIActionSheet已被...

    IOS应用源码——仿UIAlertView和UIActionSheet的一个效果.zip

    学习这个源码,开发者可以了解到如何在iOS中创建自定义用户界面组件,以及如何处理过渡和动画效果。这对于那些需要向后兼容旧版iOS,或者希望保持特定设计风格的项目来说非常有价值。此外,这也可以帮助开发者提升...

    仿UIAlertView和UIActionSheet的一个效果功能ios源码.rar

    通过研究这个源码,开发者不仅可以学习到如何实现类似UIAlertView和UIActionSheet的效果,还能了解到如何在组件被弃用后进行兼容性开发,这对于维护老项目或兼容旧版本iOS系统非常有价值。同时,这也是一种对苹果...

    UIActionSheetDemo

    总之,`UIActionSheetDemo`是一个很好的学习资源,它帮助开发者理解如何在旧版iOS上使用UIActionSheet,并展示了如何处理与新版本系统兼容的问题。在实际开发中,我们需要根据目标设备的iOS版本选择合适的方式来展示...

    iOS效果的ActionSheet

    在iOS 5之前的版本,`UIActionSheet`是官方推荐的方式,但其使用有一定的局限性,例如不支持自定义视图和样式。因此,为了达到兼容性目标,开发者可能需要寻找第三方库或者使用自定义实现。 在压缩包文件名`...

    ios应用源码之自定义action sheet效果库 20181210

    Action Sheet在iOS中的标准实现是UIActionSheet类,但在iOS 8之后,Apple推荐使用UIAlertController替代。UIAlertController可以创建包括Action Sheet在内的多种对话框样式。然而,为了满足特定的设计需求或兼容性...

    UIActionSheet定制按钮的例子

    在iOS开发中,UIActionSheet是苹果提供的一个用于展示用户可以选择的多个操作的视图,通常在iPhone上作为弹出视图出现。然而,UIActionSheet的默认样式和功能有时并不能满足开发者的需求,这时就需要进行自定义。...

    IOS应用源码之自定义action sheet效果库 .rar

    首先,Action Sheet在iOS SDK中是UIActionSheet类,但在iOS 8之后,Apple引入了新的UIKit Dynamics,UIActionSheet被UIAlertController取代,提供了更多的定制性。UIAlertController允许开发者自定义标题、消息、...

    一步一步学习_iOS_6_编程(第四版)

    第十八部分:在iOS 5中使用JSON编程 第十九部分:在.NET Framework 4.0中创建和调用RESTFul WCF 服务 第二十部分:iPhone App和RESTFul WCF 服务以及SQL Server数据库的交互 第二十一部分:改善HelloKittyStore应用...

Global site tag (gtag.js) - Google Analytics