Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS开发:实现点击常用控件弹出地区选择框(万能方法)

iOS开发:实现点击常用控件弹出地区选择框(万能方法)

原创
作者头像
三掌柜
发布于 2021-12-15 09:55:11
发布于 2021-12-15 09:55:11
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

前言

iOS开发中会遇到一些选择选项的需求,而且点击一个控件弹出一个选择框,选择之后展示到前端,然后再把选择的内容传给后台或者做本地存储。这个需求对于大多数开发者来说可以为小儿科,但是作为一个爱记录的程序猿来说相当可贵,所以还是那句话,只分享给有缘人,大牛可以飘过,不喜勿喷请走开。

随后还会分享实现点击UITextField弹出UIDatePicker日期选择器的博文,本篇博文只分享点击控件弹出选择框的方法实现(点击UIButton或者UILabel弹出选择提示框)。

以下案例使用场景:通过点击UITableViewCell,弹出弹框,然后选择地区,最后给cell上面的控件赋值。具体步骤如下所示。

1、声明一个全局属性,来接收选择之后的地区名称参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@property (strong, nonatomic) NSString *changeRegion; // 地区名称

2、在UITableView的cellForRowAtIndexPath代理方法里面的操作如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 if (indexPath.row == 3)  {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"formCell"];
 if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"formCell"];
        }
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.separatorInset = UIEdgeInsetsMake(0, 5, 0, 5);
        cell.textLabel.text = cellTitles[indexPath.row];
        cell.detailTextLabel.text = _changeRegion;  // 地区赋值
 return cell;
    }
}

3、地区选择弹出框的实现方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)alterRegion {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
    NSString *generalV = NSLocalizedString(@"General Version", nil);
    NSString *America = NSLocalizedString(@"United States", nil);
    NSString *France = NSLocalizedString(@"France", nil);
    NSString *China = NSLocalizedString(@"China", nil);
    NSString *Japan = NSLocalizedString(@"Japan", nil);
    NSString *Taiwan = NSLocalizedString(@"Taiwan", nil);
    NSArray *array = @[generalV, America, France, China, Japan, Taiwan];
 for (int i = 0; i < array.count; i++) {
        [alert addAction:[UIAlertAction actionWithTitle:array[i] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            _changeRegion = array[i];
            [self.tableView reloadData];
        }]];
    }
    NSString *cancel = NSLocalizedString(@"Cancel", nil);
    [alert addAction:[UIAlertAction actionWithTitle:cancel style:UIAlertActionStyleCancel handler:nil]];
    [self presentViewController:alert animated:YES completion:nil];
}

4、在UITableView的didSelectRowAtIndexPath代理方法里面的操作如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
 if (indexPath.row == 3) {
        [self alterRegion]; //调用地区选择弹出框的方法
    }
}

实现之后的效果如下图所示:

这里虽然介绍的是cell的点击事件的弹框处理,其他控件的使用方法类似,比如UIButton、UILabel等控件都可以这样实现地区弹框的选择方法,这里就不再一一介绍。

最后

以上就是本章的全部内容,欢迎关注三掌柜的微信公众号“程序猿by三掌柜”,三掌柜的新浪微博“三掌柜666”,欢迎关注!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS开发:Block传值的运用
首先再来了解一下Block,简单一点说,Block就是一段匿名的代码块,是具有某种功能的代码块。那么接下来通过实际应用场景,来直观的演示一下用Block传值的操作,具体如下所示。
三掌柜
2021/12/02
9360
iOS开发:Block传值的运用
iOS开发之UITableView联动实现城市选择器
在 iOS开发之城市选择器一文中用两列的UIPickerView实现了城市选择器,今天用两个UITableView来实现一下,首先这种联动在很多地方用得上,而且方法有好几种,我这里选择了个人喜欢的一种方式:弄两个UITableView,让当前控制器管理。这种方式总体思路如下: 1、添加两个UITableView到当前控制器中,分别设置它们的的尺寸,然后拖线到控制器中 2、左边的表格设置数据源和代理为当前控制器,然后显示数据,右边的表格也设置数据源为当前控制器,然后显示数据操作。 3、监听左边表格控制器
YungFan
2018/05/03
2.4K0
iOS开发之UITableView联动实现城市选择器
常用代码/Code
1、Alert - (void)showAlert{ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"确定要这样做么" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" styl
Helloted
2022/06/07
4030
iOS-UI控件之UITableView(一)
UITableView 介绍 UITableView 是用来用列表的形式显示数据的UI控件 举例 QQ好友列表 通讯录 iPhone设置列表 tableView 常见属性 // 设置每一行cell的高度 self.tableView.rowHeight = 100; // 设置每一组头部的高度 self.tableView.sectionHeaderHeight = 50; // 设置每一组尾部的高度 // self.tableView.secti
用户1941540
2018/05/11
2K0
iOS开发——UITableView勾选效果
如今的APP开发中,UITableView是最常用的控件之一,而UITableView中有个很常见的效果就是勾选效果,这个效果是由UITableViewCell中的accessoryType属性来决定的。
Originalee
2018/08/30
1.9K0
ios5开发-UITableView开启编辑功能
该例子添加UITableView编辑功能 具体功能如下 功能很简单但很实用  @implementation AppDelegate @synthesize window = _window; @s
阿新
2018/04/12
8460
ios5开发-UITableView开启编辑功能
开发体育赛事直播系统:实现聊天交友的私聊功能技术实现全方案解析
基于“东莞梦幻网络科技”体育赛事直播系统,展示前后端技术(PHP ThinkPHP + Vue.js + Android Java + iOS OC)实现的“用户与用户之间私聊”完整方案,包括功能描述、界面效果、技术实现、数据结构、接口设计及关键代码示例。
用户10027718
2025/04/08
2860
开发体育赛事直播系统:实现聊天交友的私聊功能技术实现全方案解析
iOS开发-搜索栏UISearchBar和UISearchController
最近项目中用到了搜索栏,所以在网上搜了一些相关的资料学习了一下,现在记录一下,iOS中的搜索栏实现起来相对简单一点,网上也有很多参考资料,不过靠谱的不是很多,很多都是iOS 8.0之前的实现,iOS 8.0上的实现貌似很少看到,看了一些其他人的代码,使用了一下UISearchController感觉还是非常不错的。好了不多说了 ,来点干货吧。 1 UISearchBar和UIDisplayController实现搜索 是网上最常见的也算是最简单的,也有使用Searh Bar Search Displa
roc
2018/03/30
2.6K0
iOS开发-搜索栏UISearchBar和UISearchController
IOS开发之新浪围脖
  IOS开发和Web开发一样,网络请求方式包括Get和Post方式。Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据。下面还会提到如何在我们的项目中使用CocoaPods, CocoaPods的安装和使用教程请参考链接http://code4app.com/article/cocoapods-install-usage。上面详细的介绍了CocoaPods的安装过程和如何通过CocoaPods引入第三方类库。在本篇博客中提到CocoaPods,是因为
lizelu
2018/01/11
1.4K0
IOS开发之新浪围脖
iOS_11_tableViewCell使用alertView变更数据
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117667.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
5740
iOS_11_tableViewCell使用alertView变更数据
iOS开发-UITableViewCell的创建方式
被static修饰的成员变量,全局只有一份内存 static的后面只可以放一个定值,这是在编译阶段就确定的
孙寅
2020/06/02
1.4K0
iOS开发UI篇--一个可扩展性极强的树形控件
树形控件在多列列表、多级菜单中使用比较常见,比如:国家-省份-城市 多级选择、学校-专业-班级 多级选择等等。然而IOS自带控件中并不存在树形控件,我们要在IOS开发中使用树形控件,通常需要自己扩展UITableView列表控件。 现在在这里开源一个自己写的高扩展性,高复用性的IOS树形结构控件。 支持无限极树形结构。 使用的是非递归方式。 代码简单易懂,扩展方便。 图片演示如下:
楚阳
2018/11/24
1.4K0
iOS开发UI篇--一个可扩展性极强的树形控件
史上最全的iOS之访问自定义cell的textField.text的N种方法
问题背景:自定义cell中有一个UITextField类型的子控件。我们经常要在tableView中拿到某个cell内textField的文本内容进行一些操作。比如某些app的注册界面就是以tableView的形式存在的,注册时往往需要注册姓名、昵称、邮箱、地址、联系方式等信息。然后点击注册或者提交,这些信息就会被提交到远程服务器。有人说,注册页面就那么固定的几行cell,没必要搞得那么复杂,完全可以用静态cell实现。但还有一些情况,当前页面的tableView的cell的行数是不确定的(比如当前页面显示多好行cell由上一个页面决定或者由用户决定),这种情况下不太适合使用静态cell。也不能够通过分支语句的方式一一枚举出各个case。所以需要一中通用的动态的方法。那么我们怎么在tableView中准确的拿到每一行cell中textField的text呢?以下我将要分四个方法分别介绍并逐一介绍他们的优缺点,大家可以在开发中根据实际情况有选择的采用不同的方法。 如下图,就是我之前开发的一个app中用xib描述的一个cell,当用户点击“注册”或者“提交”button时候,我需要在控制器中拿到诸如“法人姓名”这一类的信息:
VV木公子
2018/06/05
7.2K0
史上最全的iOS之访问自定义cell的textField.text的N种方法
Swift 学习Using Swift mix and match, network: 写rss读者
4. need a feed manager: FeedManager.swift
全栈程序员站长
2022/07/06
1.4K0
iOS - 开发1年后对MVC新的理解
问题来了回到工程项目需求,每个cell都有增加减少按钮 而且需要有选中效果在View层.意味着MVC架构模式中 我在View层对Model进行了修改.
Wilbur-L
2022/03/10
1.3K1
【IOS开发基础系列】Table View开发专题
    A table view is an instance of theUITableView class in one of two basic styles, plain or grouped. A plain table view is an unbroken list; a grouped table view has visually distinct sections. A table view has a data source and might have a delegate. The data source object provides the data for populating the sections and rows of the table view. The delegate object customizes its appearance and behavior.
江中散人_Jun
2023/10/16
8730
【IOS开发基础系列】Table View开发专题
【iOS7一些总结】9、与列表显示(在):列表显示UITableView
列表显示,顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容。于ios在列表视图UITableView达到。这个类在实际应用中频繁,是很easy理解。这里将UITableView的主要使用方法总结一下以备查。
全栈程序员站长
2022/07/06
2.5K0
【iOS7一些总结】9、与列表显示(在):列表显示UITableView
【IOS开发基础系列】Storyboard专题
        如果你的 app 有大量的窗口,故事板能帮你减少许多用于从一个窗口转到另一个窗口的导航代码。与每个viewcontroller一个单独的 nib 文件不同,你的 app 只需用一个故事板文件(其中可以包含所有的viewcontroller 以及它们之间的关系)即可。
江中散人_Jun
2023/10/16
2.3K0
【IOS开发基础系列】Storyboard专题
iOS 二级菜单(UITableView实现)「建议收藏」
首先建立一个cell的类,用于存放cell中的内容 ,继承自uitableviewcell;
全栈程序员站长
2022/06/27
1.4K0
在iOS中怎样创建可展开的Table View?(下)
我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合拢.以及显示或者隐藏合适的子cell.
hrscy
2018/08/30
1.9K0
在iOS中怎样创建可展开的Table View?(下)
相关推荐
iOS开发:Block传值的运用
更多 >
LV.6
腾讯云TDPKOL
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验