IOS基础:ActionSheet(上拉菜单)的实现


一看图就明白了,毋需多说。

 

[java] view plaincopyprint?
  1. UIActionSheet* mySheet = [[UIActionSheet alloc]  
  2.                            initWithTitle:@"ActionChoose"   
  3.                            delegate:self   
  4.                            cancelButtonTitle:@"Cancel"  
  5.                            destructiveButtonTitle:@"Destroy"  
  6.                            otherButtonTitles:@"OK", nil];  
  7.     [mySheet showInView:self.view];  

与UIAlertView类似,我们也是在委托方法里处理按下按钮后的动作。记得在所委托的类加上UIActionSheetDelegate。

 

[java] view plaincopyprint?
  1. - (void)actionSheetCancel:(UIActionSheet *)actionSheet{  
  2.     //   
  3. }  
  4. - (void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{  
  5.     //   
  6. }  
  7. -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{  
  8.     //   
  9. }  
  10. -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex{  
  11.     //   
  12. }  

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

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

 

[java] view plaincopyprint?
  1. mySheet.destructiveButtonIndex=1;  

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

 

 

[java] view plaincopyprint?
  1. UIActionSheetStyleDefault              //默认风格:灰色背景上显示白色文字   
  2. UIActionSheetStyleBlackTranslucent     //透明黑色背景,白色文字   
  3. UIActionSheetStyleBlackOpaque          //纯黑背景,白色文字  

用法用例:

 

mySheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;

显示ActionSheet有三种方法:

1.在一个视图内部显示,可以用showInView

[mySheet showInView:self];

2.如果要将ActonSheet 与工具栏或者标签栏对齐,可以使用showFromToolBar或showFromTabBar

[mySheet showFromToolBar:toolbar];

[mySheet showFromTabBar:tabbar];
解除操作表单

用户按下按钮之后,Actionsheet就会消失——除非应用程序有特殊原因,需要用户按下做个按钮。用dismiss方法可令表单消失:

 

[java] view plaincopyprint?
  1. [mySheet dismissWithClickButtonIndex:1 animated:YES];  


 

必须使用Protocol,在类定义的地方定义使用UIActionSheetDelegate协议,

@interface XXXController : UIViewController <UIActionSheetDelegate> {...

 

在程序里面调用

UIActionSheet *actionSheet = [[UIActionSheet alloc]

  initWithTitle:@"Are you sure?"         //标题

  delegate:self                  //此处指定处理按钮按下之后的事件的类,该类必须实现UIActionSheetDelegate协议

  cancelButtonTitle:@"Cancel" 

  destructiveButtonTitle:@"OK"

  otherButtonTitles:@"button1", @"button2", nil];  //可指定很多个button,最后一个参数必须为nil,此为OBJC特殊特性

[actionSheet showInView:self.view];   //在哪个view里面弹出上拉菜单

[actionSheet release];    //一定要release

记得最后一定要release!

 

处理按钮事件的方法为实现UIActionSheetDelegate协议的actionSheet方法:

- (void)actionSheet:(UIActionSheet *)actionSheet

didDismissWithButtonIndex:(NSInteger)buttonIndex

{

    if( buttonIndex != [actionSheet cancelButtonIndex]){

        //...

    }

}

转载于:https://www.cnblogs.com/martin1009/archive/2012/06/25/2561362.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Word2vec学习笔记总结

git地址&#xff1a; https://github.com/duankai/latex_book/tree/master/word2vec

创建链表和遍历链表算法演示

#include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h>typedef struct Node {int data; //数据域struct Node * pNext; //指针域}Node, *pNode;//函数声明 pNode create_list(); void traverse_list(pNode pHead); int…

@Autowired、@Resource

Autowired通过 Autowired的使用来消除 set &#xff0c;get方法 - Spring 2.5 JPA hibernate 使用方法的点滴整理我们编写spring 框架的代码时候。一直遵循是这样一个规则&#xff1a;所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套写上 get 和 set方法。虽然…

SpringCloud 入门教程(七): 熔断机制 -- 断路器

对断路器模式不太清楚的话&#xff0c;可以参看另一篇博文&#xff1a;断路器&#xff08;Curcuit Breaker&#xff09;模式&#xff0c;下面直接介绍Spring Cloud的断路器如何使用。 SpringCloud Netflix实现了断路器库的名字叫Hystrix. 在微服务架构下&#xff0c;通常会有多…

ABTest系统调研和需求

一、AB测试的必要性 1.1 算法评估 线下可以使用离线的AUC&#xff0c;NDCG等指标进行算法模型的评估&#xff0c;算法上线后怎样进行算法间的评估&#xff0c;上线的算法是好是坏&#xff0c;好多少&#xff1f;坏多少&#xff1f; 要有效评估算法&#xff0c;必须借助AB测试…

SpringCloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine

1. Hystrix Dashboard (断路器&#xff1a;hystrix 仪表盘) Hystrix一个很重要的功能是&#xff0c;可以通过HystrixCommand收集相关数据指标. Hystrix Dashboard可以很高效的现实每个断路器的健康状况。 1&#xff09;. 在Ribbon服务g和Feign服务的Maven工程的pom.xml中都加…

SpringCloud 入门教程(九): 路由网关zuul

在微服务架构中&#xff0c;需要几个关键的组件&#xff0c;服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等&#xff0c;由这几个组件可以组建一个简单的微服务架构。客户端的请求首先经过负载均衡&#xff08;zuul、Ngnix&#xff09;&#xff0c;再到达服…

33岁的互联网人,看看我自己做了什么?

一、2021年之前 2020年8月中&#xff0c;从一家上市互联网公司离职&#xff0c;离职的原因和其中发生的一些事情也是一言难尽。感谢我当时的直属领导lfp和上层领导zjs&#xff0c;他们教会了我不少的东西&#xff0c;到现在都还有和他们联系&#xff0c;也很感谢我的同事&…

SpringCloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

在本教程第三讲Spring Cloud 入门教程(三)&#xff1a; 配置自动刷新中&#xff0c;通过POST方式向客户端发送/refresh请求&#xff0c; 可以让客户端获取到配置的最新变化。但试想一下&#xff0c; 在分布式系统中&#xff0c;如果存在很多个客户端都需要刷新改配置&#xff0…

SpringCloud Eureka参数配置项详解

Eureka涉及到的参数配置项数量众多&#xff0c;它的很多功能都是通过参数配置来实现的&#xff0c;了解这些参数的含义有助于我们更好的应用Eureka的各种功能&#xff0c;下面对Eureka的配置项做具体介绍&#xff0c;供大家参考。 Eureka客户端配置 1、RegistryFetchIntervalSe…

OAuth 2.0 - Authorization Code授权方式详解

I:OAuth 2.0 开发前期准备 天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源&#xff0c;所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门&#xff0c;腾讯获取传送门 这里说一下&#xff0c;在申请AppKey和AppSecret的过程…

最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

一、spring cloud简介 鉴于《史上最简单的Spring Cloud教程》很受读者欢迎&#xff0c;再次我特意升级了一下版本&#xff0c;目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。 Finchley版本的官方文档如下&#xff1a; http://cloud.spri…

最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)

在上一篇文章&#xff0c;讲了服务的注册和发现。在微服务架构中&#xff0c;业务都会被拆分成一个独立的服务&#xff0c;服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式&#xff0c;一种是ribbonrestTemplate&#xff0c;另一种是feign。在这一篇文章…

链表选择排序算法功能实现演示

算法: 狭义的算法是与数据的存数方式密切相关 广义的算法是与数据的存储方式无关 泛型: 利用某种技术达到的效果就是:不同的存数方式&#xff0c;执行的操作是一样的 #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h&g…

链表插入功能实现演示

#include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h>typedef struct Node {int data; //数据域struct Node * pNext; //指针域}Node, *pNode;//函数声明 pNode create_list(); void traverse_list(pNode pHead); …

【.NET程序性能分析】使用VS自带的工具分析.NET程序的性能

这篇博文给大家分享的是&#xff0c;如何使用VS自带的性能分析工具来分析我们编写的.NET程序&#xff0c;一边找出程序性能的瓶颈&#xff0c;改善代码的质量。在实际开发中&#xff0c;性能真的很重要&#xff0c;往往决定一个产品的生死~良好的用户体验的基础之一也是程序要有…

链表删除功能实现演示

插入算法和删除演示&#xff1a; #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h>typedef struct Node {int data; //数据域struct Node * pNext; //指针域}Node, *pNode;//函数声明 pNode create_list(); void …

栈入门

线性结构的两种常见应用之一栈 定义&#xff1a;一种可以实现”先进后出”的存储结构&#xff0c;栈类似于箱子 分类&#xff1a;静态栈、动态栈 算法&#xff1a;出栈、压栈 栈的定义&#xff1a; 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性…

Packet Tracer 5.0实验(四) 利用三层交换机实现VLAN间路由

一、实验目标 掌握交换机Tag VLAN 的配置&#xff1b;掌握三层交换机基本配置方法&#xff1b;掌握三层交换机VLAN路由的配置方法&#xff1b;通过三层交换机实现VLAN间相互通信&#xff1b;二、实验背景 某企业有两个主要部门&#xff0c;技术部和销售部&#xff0c;分处于不同…