返回顶部
首页 > 资讯 > 移动开发 >iOS UIPickerView的简单封装示例
  • 893
分享到

iOS UIPickerView的简单封装示例

iosuipickerview封装 2022-05-29 09:05:20 893人浏览 安东尼
摘要

前言 在iOS实际项目中,经常会出现界面中多个地方需要使用UIPickerView,如果在每个需要用到的地方都创建一个UIPickerView不仅更耗性能,而且还会让你的代码变得更加

前言

iOS实际项目中,经常会出现界面中多个地方需要使用UIPickerView,如果在每个需要用到的地方都创建一个UIPickerView不仅更耗性能,而且还会让你的代码变得更加杂乱、冗余,因此我在这里向大家介绍一下我对UIPickerView的一些简单封装。

所需属性



@property (nonatomic, strong) UIPickerView pickerView;

@property (nonatomic, strong) UIView pickerBackGroundView;

@property (nonatomic, strong) UIView backGroundView;

@property (nonatomic, strong) UIButton sureButton;

@property (nonatomic, strong) UIButton cancelButton;

@property (nonatomic, strong) NSMutableArray slDataArray;

@property (nonatomic, strong) NSMutableArray *mulDataArray;

如果只需要一列的话,只需要传入一个数据数组:slDataArray,如果需要两行,则两个数组都需要赋值。

实现UIPickerView代理方法


-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
  if (self.mulDataArray.count == 0) {
  return 1;
 }else {
  return 2;
  }
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
 if (component == 0) {
  return self.slDataArray.count;
  }else {
  return self.mulDataArray.count;
 }
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
 if (component == 0) {
  return self.slDataArray[row];
 }else {
 return self.mulDataArray[row];
 }
}

这里根据两个数组来初始化pickerView的内容,即判断第二个数组(mulDataArray)是否有数据,有数据的话代表加载两列的pickerView,否则加载一列。

功能实现


-(void)pickerViewSelectRow:(NSInteger)row
{
 self.selectRow = row;
 [self.pickerView selectRow:row inComponent:0 animated:NO];
}
-(void)pickerViewSelectRow:(NSInteger)row lastRow:(NSInteger)lastRow{
 [self.pickerView selectRow:row inComponent:0 animated:NO];
 [self.pickerView selectRow:lastRow inComponent:1 animated:NO];
}

第一个方法是只有一列的pickerView初始化是让其选中哪行,第二个则是两列的选择方法。


-(void)showOrHidePickerView:(BOOL)isshow{
 if (isShow) {
  if (self.isPickerShow == NO) {
   [self addSubview:self.backGroundView];
   [self addSubview:self.pickerBackGroundView];
   [UIView animateWithDuration:0.3 animations:^{
     self.backGroundView.alpha = 0.5;
     self.pickerBackGroundView.frame = CGRectMake(0, SCREEN_HEIGHT -220, SCREEN_WIDTH, 220);
   } completion:^(BOOL finished) {   self.isPickerShow = YES;
   }];
  }
 }else {
  if (self.isPickerShow) {
   [UIView animateWithDuration:0.3 animations:^{
   self.backGroundView.alpha = 0.0;
   self.pickerBackGroundView.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, 220);
  } completion:^(BOOL finished) {
   [self.backGroundView removeFromSuperview];
   [self.pickerBackGroundView removeFromSuperview];
   self.isPickerShow = NO;
  }];
  }
 }
}

这个方法是显示或者隐藏pickerView,通过动画的方式,背景慢慢变黑或者透明,pickerView从下往上出现或者从上往下消失。


-(void)pickerViewReloadData{
 [self.pickerView reloadAllComponents];
}

刷新pickerView数据,加载另一个pickerView时,调用该方法刷新。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对编程网的支持。

--结束END--

本文标题: iOS UIPickerView的简单封装示例

本文链接: https://lsjlt.com/news/30312.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • iOS UIPickerView的简单封装示例
    前言 在iOS实际项目中,经常会出现界面中多个地方需要使用UIPickerView,如果在每个需要用到的地方都创建一个UIPickerView不仅更耗性能,而且还会让你的代码变得更加...
    99+
    2022-05-29
    ios uipickerview 封装
  • iOS实现图片水印与简单封装示例代码
    前言: 常用的许多软件中图片加水印的功能是非常常见的,如微博,微信,今日头条等等图片上都会有。 首先我们了解一下什么是水印及其作用? 水印:在图片上加的防止他人盗图的半透明logo、...
    99+
    2022-05-24
    ios 图片水印 封装
  • vue3学习笔记简单封装axios示例实现
    目录简介openapi基本配置拦截器api请求数据渲染简介 axios是一个基于promise的网络请求库,管理后台使用的场景通常 获取后端api数据,然后交给页面渲染 还是在前面的...
    99+
    2024-04-02
  • 简单好用的iOS导航栏封装.runtime属性控制实例代码
    前言 本文主要给大家介绍一个不错的导航栏控制工具,可以大大的简化代码,并保留系统特性,不用自定义导航栏,不用继承base。 下面话不多说了,来一起看看详细的介绍吧 UIViewCon...
    99+
    2022-05-16
    导航栏 封装 .runtime
  • iOS封装倒计时按钮HLCountDownButton示例详解
    目录引言演示图可选自定义属性3种样式选择回调说明全局样式设置引言 在开发中经常会用到倒计时的按钮,常用在发送短信验证码中。最差的写法是把代码写在ViewController中。这样的...
    99+
    2024-04-02
  • nodejs连接mysql数据库简单封装示例-mysql模块
    本人最近在学习研究nodejs,下面我来记录一下,有需要了解nodejs连接mysql数据库简单封装的朋友可参考。希望此文章对各位有所帮助。 安装mysql模块 npm install mysql ...
    99+
    2022-06-04
    示例 模块 简单
  • vue3中的hook简单封装
    目录vue3的hook封装vue3的hooks总结下面总结一下如何去书写hooks计数器的hookvue3的hook封装 vue3最新鲜的就是组合式API了,通过组合式API我们可以...
    99+
    2024-04-02
  • vue右键菜单的简单封装
    本文实例为大家分享了vue实现右键菜单封装的具体代码,供大家参考,具体内容如下 封装一个简单的右键菜单,要求右键处出现菜单,点击除了菜单部分可以关闭菜单。 组件 <templ...
    99+
    2024-04-02
  • Python 装饰器简单示例
    简单装饰器示例: def servlet(func): print("into servlet")#1 print(servlet)#2 def foo(): print("into foo")#7 ...
    99+
    2023-01-31
    示例 简单 Python
  • iOS如何封装带复制功能的UILabel示例代码
    前言 UILabel继承自UIView是iOS中使用非常频繁的一个视图控件一般用于显示文字。 一:基本使用 1.创建 UILabel *label = [[UILabel...
    99+
    2022-05-20
    封装 复制 uilabel
  • axios的简单封装以及使用实例代码
    前言 最近在构建项目时,想到了请求的封装,之后就琢磨如何封装才好。虽然对各位大佬来说可能是个小事情,但对我来说也算是一个小小的挑战。在我设想中请求的一些基本配置与具体接口应该放于两个...
    99+
    2024-04-02
  • Vue使用axios发送请求并实现简单封装的示例详解
    目录一、安装axios二、简单使用1.配置2.发送请求三、封装使用1.创建js封装类2.配置3.发送请求一、安装axios npm install axios --save 二、简单...
    99+
    2024-04-02
  • Android中网络框架简单封装的实例方法
    Android中网络框架的简单封装 前言 Android作为一款主要应用在移动终端的操作系统,访问网络是必不可少的功能。访问网络,最基本的接口有:HttpUrlConnecti...
    99+
    2022-06-06
    方法 封装 框架 Android
  • matplotlib简单示例
    一、简介 以下引用自百度百科 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功...
    99+
    2023-01-30
    示例 简单 matplotlib
  • Python简单解析和封装json
    python list对象转换成json格式 #!/usr/bin/env python import json data = [{'type':'trigger','addr':'0x1234','data':'0x...
    99+
    2023-01-31
    简单 Python json
  • Python调用OpenAI接口的简单封装
    1. 注册OpenAI账号,获取OpenAI-API key 网上有很多资料,这里就不再叙述了,科学上网,懂得都懂。 一个小坑,在生成API key之后需立刻复制下来,否则将无法再次打开。当然如果错过复制了,也可以再重新生成一个key。 2...
    99+
    2023-09-04
    人工智能 python
  • iOS开发中实现邮件和短信发送的简单示例
    发送邮件 1.导入库文件:MessageUI.framework 2.引入头文件 3.实现代理<MFMailComposeViewControllerDelegate> ...
    99+
    2022-05-26
    iOS 邮件 短信
  • Vue封装axios的示例讲解
    1、axios:是一个基于Promise的网络请求库。既可以在node.js(服务器端)使用,也可以在浏览器端使用 (1)在node.js中使用的原生的http模块 (2)在浏览器中...
    99+
    2023-01-10
    Vue axios Vue封装axios
  • Android OkHttp的简单使用和封装详解
    Android OkHttp的简单使用和封装详解 1,昨天把okHttp仔细的看了一下,以前都是调用同事封装好了的网络框架,直接使用很容易,但自己封装却不是那么简单,还好,今天...
    99+
    2022-06-06
    okhttp 封装 Android
  • React hook实现简单的websocket封装方式
    目录React hook实现websocket封装react自定义hook解决websocket连接,useWebSocket1、描述2、代码React hook实现websocke...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作