首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用6个以上的自定义按钮时,UIActionSheet buttonIndex值是否有问题?

在iOS开发中,使用6个以上的自定义按钮时,UIActionSheet的buttonIndex值是有问题的。UIActionSheet是一个用于显示操作选项的弹出菜单,但是在iOS 8及以后的版本中,UIActionSheet被废弃,推荐使用UIAlertController来代替。

在使用UIActionSheet时,当有6个以上的自定义按钮时,buttonIndex值会出现偏差。具体来说,当有6个按钮时,buttonIndex的值会从0到5依次对应每个按钮,但是当有6个以上的按钮时,buttonIndex的值会从0开始递增,但是并不会对应到每个按钮。

为了解决这个问题,可以使用UIAlertController来创建弹出菜单,并使用UIAlertAction来添加按钮。UIAlertController提供了更灵活的方式来创建和管理弹出菜单,并且不会出现buttonIndex值的问题。

以下是使用UIAlertController创建弹出菜单的示例代码:

代码语言:swift
复制
let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .actionSheet)

let action1 = UIAlertAction(title: "Button 1", style: .default) { (action) in
    // Button 1 action
}

let action2 = UIAlertAction(title: "Button 2", style: .default) { (action) in
    // Button 2 action
}

// Add more actions as needed

let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (action) in
    // Cancel action
}

alertController.addAction(action1)
alertController.addAction(action2)
// Add more actions as needed
alertController.addAction(cancelAction)

// Present the alert controller
present(alertController, animated: true, completion: nil)

通过使用UIAlertController,可以避免UIActionSheet在使用6个以上的自定义按钮时出现的buttonIndex值问题,并且提供了更好的用户体验和更灵活的功能。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )

; -- Bar : 分段控件使用工具条风格; (2) State 属性 State 属性 :  -- Momentary 复选框 : 勾选复选框后, 分段控件不保存控件状态, 如果勾选后, 点击高亮...-- 缩放主体 : 图片缩放只在 UIEdgeInsets 定义 四个属性 区域缩放, 图片中心部分是不进行缩放; 3....:" 方法 : 用户单击对话框中按钮激发方法, buttonIndex 是点击按钮索引; -- "- (void) willPresentAlertView : (UIAlertView *)...UIActionSheet 简介 (1) UIActionSheet 作用 UIActionSheet 作用 : 该控件是显示在界面底部按钮列表, 该控件 一个标题 和 多个按钮; (2) UIActionSheet...按钮 UIActionSheet 固定按钮 :  -- 取消按钮 : 灰色背景, 主要用于取消该 UIActionSheet 控件显示; -- 销毁按钮 : 红色背景, 用于删除某记录, 使用按钮确认销毁

2.8K40
  • UIAlertView、UIActionSheet、UIAlertController使用

    defaultAlert.gif 其中,"查看"buttonIndex == 1,"评论"buttonIndex == 2,"取消"buttonIndex == 0 2.带有明文输入框 - (void...所以UIAlertController一个preferredStyle属性属性,该属性是个UIAlertControllerStyle类型枚举,其如下: typedef NS_ENUM(NSInteger...UIAlertControllerStyleActionSheet,那么其作用和效果就相当于iOS8中被废弃UIActionSheet。...我们知道,使用UIAlertView和UIActionSheet需要遵守对应协议并实现相应方法,因为UIAlertView和UIActionSheet采用delegate方式处理事件。...而UIAlertController则采用灵活block方式处理事件。所以使用UIAlertController不用再遵守某个协议,只需将响应事件代码写在block中即可。

    6.3K30

    iOS调整导航条BarButtonItem与titleView 间距

    常见问题 1、 BarButtonItem 隐藏失效解决方案:使用initWithCustomView进行实例化BarButtonItem 2、 iOS13.5.1 版本无法点击导航条右侧按钮:CustomView...相当于btn向右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5,间距正好调整 * 为0;width为正数,正好相反,相当于往左移动width数值个像素...相当于btn向右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5,间距正好调整 * 为0;width为正数,正好相反,相当于往左移动width数值个像素...进行实例化,这个方法才生效 self.navigationItem.leftBarButtonItem.customView.hidden=YES 解决方法:使用initWithCustomView...3.1 UIActionSheet打开相册处理:通常是等didDismissWithButtonIndex 之后才进行控制器跳转 - (void)actionSheet:(UIActionSheet

    2.1K20

    iOS学习——UIAlertController详解

    ,我们常用配置两类,一是根据需要添加按钮,并味蕾个按钮添加点击事件;二是根据需要添加文本框,用于和用户进行更多交互。...,其中第一个参数是按钮标题;第二个参数UIAlertActionStyle是选择按钮风格类型,三种选择:常规、取消和销毁风格类型;第三个参数是一个Block,定义了按钮点击响应事件。...主要方法两种: 利用第三方控件 利用KVC方法进行自定义修改 2.1 利用第三方控件进行UIAlertController属性自定义 现在Github上有着众多Alert控件(如SCLAlertView...等),相信很多都可以满足大家需求,只要使用Cocoapods添加添加第三方库就可以了。...2.2 利用KVC方法进行UIAlertController属性自定义   有时候使用第三方控件会带来很多不必要代码量和bug,所以能用系统自带UIAlertController解决是最好办法,

    3K170

    ​Flutter | 1.9 全新组件 ToggleButtons

    7.fillColor:选中按钮背景颜色8.focusColor:当按钮中具有输入焦点填充颜色9.highlightColor:点击颜色10.hoverColor:当按钮上有指针悬停用于填充按钮颜色...11.splashColor:点击后颜色12.focusNodes:每一个按钮焦点13.renderBorder:是否在每个切换按钮周围呈现边框14.borderColor:边框颜色15.selectedBorderColor...这里一个实现,它允许同时选择多个按钮,而不需要选择任何一个按钮。...其中最重要代码就是: 1.添加了 「onPress」方法2.在「onPress」回调中刷新每一个切换按钮 第二个示例 再来看第二个示例: Here is an implementation that...该示例展示了只能选择一个、并且可以不选 demo,主要逻辑如下: 循环所有的切换按钮,如果是当前 index,则置反,如果不是,则置为 false。

    1.9K20

    升级IOS8游戏上传自定义头像功能失效问题

    为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核,测试那边同事反馈说游戏上传自定义头像功能不可用了。...游戏上传自定义功能简介:卡牌游戏最初是《比武招亲》中有一个充VIP之后就可使用了上传自定义功能特权,我们游戏就“复制”了该功能。...具体实现就是点击游戏内换自定义头像按钮后,调用不同平台相应方法,获取用户选择图片数据,然后将图片裁剪再传给后台保存至特定目录下。...原因是UIActionSheet在ios8中已经被弃用了(点击查看详情>>),使用UIAlertController进行替代,这里两篇文件介绍它: UIAlertController in IOS8>...换成IOS8.1SDK后,上传头像功能不可用了,搜索了好久发现都跟自己问题对不上,当输入特定关键字出来第一条就是自己想要,结果几分钟就把问题解决了,但找相应答案之前却已经花了将近4个小时…

    67920

    iOS项目——自定义UITabBar与布局

    主要缺点就是需要先申请一个位置和控制器来占位比较浪费,而且这种也只适用于各控件大小是均匀情况,当我们需求中每个TabBarItem规格和尺寸不一样,我们就无法使用这种方案实现。   ...几点值得说明一下: 设置所有UITabBarItem文字属性在上一篇文章iOS项目——基本框架搭建中已经提到了,这里就不详细介绍了 【发布】按钮初始化应该使用单例模式进行创建,因为我们项目中只有一个...【发布】按钮,所以使用单例模式更合理,本文采用懒加载方式进行单例模式创建 在  中添加【发布】按钮 [self.tabBar addSubview:self.publishButton]; 。...同样,也有几点需要注意: 【发布】按钮初始化还是和上面一样,应该采用单例模式进行初始化,具体就不展开; 重写  方法,应该先调用其父类此方法 [super layoutSubviews]; ,...TabBar进行断点调试,发现确实是先运行XMGTabBarController viewDidLoad方法,然后才运行自定义TabBar layoutSubviews 方法。

    3K90

    iOS相机、麦克风等权限判断与设置

    一、iOS应用权限检测 在涉及到这个问题时候,首先为了适配iOS10系统,我们必须首先在info.plist文件中声明将要用到权限,否则将会引起崩溃如下: “This app has crashed...那么设置权限声明方式如下: ? 屏幕快照 2017-01-09 下午7.52.07.png 我们需要点击Info.plist中加号,增加需要授权key并填写相应权限使用声明。...NS_ENUM(NSInteger, AVAuthorizationStatus) { AVAuthorizationStatusNotDetermined = 0,//未询问过用户是否授权...,使用PHPhotoLibrary需要导入Photos框架。...我们在检测授权时候弹窗会有授权和不授权回调,有时候我们会在这里处理一些自定义UI问题,这里一定要在主线程中进行,否则会出现崩溃等问题,回到主线程中操作如下: dispatch_async(dispatch_get_main_queue

    3.7K60

    六天完成一个简单iOS App - 第一天

    项目介绍 仿照百思不得姐,通过看李明杰老师视频学习自己实践并简单总结项目开发过程中普遍遇到问题,并且将可以用到其他项目中分类方法进行简单总结,便于以后在别的项目中使用。 每天任务 1....UITabBar 中间添加按钮实现 我们知道中间加号按钮是没有标题,即使我们将标题设置为空,还有标题label站位,所以UITabBarItem是不能实现了,那么我们只能将一个button覆盖在中间这块区域上...CGFloat buttonY = 0; // 按钮索引 int buttonIndex = 0; for (UIView *subview in self.subviews...然后让其他导航栏控制器继承于他,这样可以达到返回按钮统一,但是这样做一个局限性,UINavigationController子控制器是固定,例如UIViewController,如果我们需要使用UITableViewControlller...注意:NavigationController根控制器也是push进来,所以需要判断是否是根控制器 -(void)pushViewController:(UIViewController *)viewController

    1.1K50

    【iOS】关联对象详解

    然而两者之间个重要差别:如果两个键指针不同,但是相同,在这两个键上调用“isEqual:”方法返回是YES,那么字典也认为二者相等。(详情可参考笔者《浅析对象等同性判断》)。...设置关联对象键是个“不透明指针(opaque pointer)”。在设置关联对象,若想另两个键匹配到同一个,则二者必须是完全相同指针才行。...当用户按下按钮关闭该视图,需要用委托协议(delegate protocol)来处理此动作,但是,要想设置好这个委托机制,就得把创建警告视图和处理按钮动作代码分开。...比方说,我们在使用UIAlertView,一般都会这么写: - (void)askUserAQuestion { UIAlertView *alert = [[UIAlertView...要是能在创建警告视图时候直接把处理每个按钮逻辑都写好,那就简单多了。这可以通过关联对象来做。创建完警告视图之后,设定一个与之关联“块”(block),等到执行delegate方法再将其读出来。

    7.7K40

    iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)

    那么,你是否能为这种添加事件方式携带另外信息呢?...当用户按下按钮关闭该视图,需要用委托协议(delegate protocol)来处理此动作,但是,要想设置好这个委托机制,就得把创建警告视图和处理按钮动作代码分开。...方案1 :传统方案 比方说,我们在使用UIAlertView,一般都会这么写: Test2ViewController - (void)viewDidLoad { [super viewDidLoad...要是能在创建UIAlertView时候直接把处理每个按钮逻辑都写好,那就简单多了。这可以通过关联对象来做。...创建完警告视图之后,设定一个与之关联“块”(block),等到执行delegate方法再将其读出来。下面对此方案进行改进。

    2.7K20

    【IOS开发基础系列】UIAlertController专题

    使用对话框(alert)还是使用上拉菜单(action sheet),就取决于在创建控制器,您是如何设置首选样式。...我们先不着急回答这个问题,先来看一下下面关于“警示”样式简单示例。在这个示例中,我们将前面的示例中“好按钮替换为了“重置”按钮。     ...3 开发技巧 3.1 常见问题 3.1.1 集成键盘监听后,重复进入页面挂机问题         在项目中,由于自定义AlertView中有用到textfield,故AlertView中添加了键盘显示隐藏通知监听...此监听务必在Alertview被释放移除,不然可能引起挂机问题。        ...具体表现是:在项目中,自定义AlertView实例生命周期是在plugin中管理,plugin差不多是单例模式,故自定义AlertView实例不会轻易释放,只有下一次调用插件,实例进行替换才会将上一实例释放

    51230
    领券