【IOS 开发学习总结-OC-40】★★ios开发之事件机制——控件获取方式与事件处理方式
来源:互联网 发布:c 二维数组输出 编辑:程序博客网 时间:2024/06/04 19:06
使用 IOS 的事件机制,可以实现与用户的交互。
ios程序获取控件的2种方式:
- 通过
IBOutlet
连接来获取控件 ;- 通过为控件指定Tag 属性来获取控件。
通过 IBOutlet
连接来获取控件
IBOutlet是 什么呢 ?它是个特殊的属性,可建立与界面设计文件中控件的关联。
简单示意图:
看图示到第4步时,需要选中控件然后按住 control+鼠标左键
,从可视化界面拖动到右侧 的相应头文件中,松手后就能看到示意图效果。然后就是设置选项了。下面仔细说道一下:
- ⭐️connection 列表:选择该 UI 控件创建 IBOutlet 属性还是IBOutlet集合。——大部分时候是创建IBOutlet 属性;创建IBOutlet集合允许开发者将多个相同类型的对象与一个 NSArray 属性建立关联,而不是为每个 UI 控件创建单独的IBOutlet 属性。
- Name: 设置属性名;
- Type: xcode 会自动检测,有时也需要我们手动选择设置。
- ⭐️ storage列表框:设置存储机制:strong 或 weak。
关于 strong 和 weak 之前也简单介绍过。这里有 2篇不错的讲解文章作为知识补充,供我们一起学习:
①: ARC指南1 - strong和weak指针
②: iOS ARC 完全指南(资料下载)知识扩展:为 UI 控件创建 IBOutlet 属性,其实就是在控制器接口部分使用 @property 定义一个属性——并不需在控制器实现部分使用@synthesize 为该属性 合成 setter,getter 方法。如果程序需要改变该属性 对应的实例变量,依然可以借助@synthesize进行定义。
通过Tag 属性来获取控件
示例代码段:
// 重写该方法,当该控制器关联的视图加载完成后系统会调用该方法- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"nib文件加载完成!!"); // 如果程序需要再nib视图文件加载完成执行某些额外的处理,可在此处编写代码。 // 借助于viewWithTag:方法即可通过UI控件的Tag属性来获取该控件, UILabel* myLb = (UILabel*)[self.view viewWithTag:12]; // 设置myLb的文本内容 [myLb setText:@"欢迎学习iOS开发!"]; // 直接通过IBOutlet属性来访问第一个UILable控件 [self.myTxt setText:@"iOS真有趣!"]; // 为loginBn控件的UIControlEventTouchUpInside事件绑定事件处理方法 // 以当前对象的loginHandler:方法作为事件处理方法 [self.loginBn addTarget:self action:@selector(loginHandler:) forControlEvents:UIControlEventTouchUpInside];}
事件处理方式
IOS 中常见的事件处理方式有3种:
- 通过 IBAction 绑定将控件的特定事件绑定到控制器的指定方式,——该控件上事件发生时,将会触发控制器对应的方法;
- 程序中为 UI 控件的特定事件绑定事件监听器;
- 直接委托给对应的委托对象处理——对于 UI 控件的某些生命周期事件;
事件处理方式之IBAction 绑定
IBAction方法是可被作为界面设计文件中 UI控件的事件处理方法的一种特殊的方法。
这里以 UIButton 控件为例(各参数介绍讲解):
示例代码段:
- (IBAction)clickHandler:(UIButton *)sender { [self.myTxt setText:@"IBAction事件机制"];}
通过代码设置事件处理方法
iOS应用中能与用户进行交互的控件大都继承了 UIControl 基类,该类提供的如下的注册,删除事件处理方法:
1. -addTarget: action: forControlEvents:
——为当前控件注册事件处理方法。该方法的3个参数说明:①addTarget:
指定任意对象,表明将以该对象的方法作为事件处理方法。②action:
接受一SEL 参数,代表一个 IBAction方法,将以该方法作为事件处理方法;③forControlEvents:
——接受一个 UIControlEvents类型的枚举值,用于指定事件类型,——表明 为此种类型的事件绑定 事件处理方法。
2. removeTarget: action: forControlEvents:
删除为当前 UIControl 控件的指定事件所注册的事件处理方法,参数跟注册时意义相同。
IBAction 绑定事件处理方式与
-addTarget: action: forControlEvents:
的方法绑定事件处理方式的区别?
它们二者的本质是一样的。区别只在于,前者的方法更简单,但后者的方式更灵活。
通过委托对象来处理事件
对于某些控件来说,自身有一些特殊事件,前面的2种方式都没法使用。比如 UITable 控件,系统为此专门为 UITable 提供了一个事件委托接口,而实现该事件委托接口的对象负责处理该控件的特殊事件。这部分内容可以参考后面 UITable控件的详细讲解。
- 【IOS 开发学习总结-OC-40】★★ios开发之事件机制——控件获取方式与事件处理方式
- 【IOS 开发学习总结-OC-51】★★★ios开发之UI控件——UITableView 与UITableViewCell
- 【IOS 开发学习总结-OC-45】★★ios开发之UI控件——UISegmentedControl与UIImageView
- 【IOS 开发学习总结-OC-48】★★ios开发之UI控件——UIDatePicker与 UIPickerView
- 【IOS 开发学习总结-OC-49】★★ios开发之UI控件——UIStepper与UIWebView
- 【IOS 开发学习总结-OC-42】★ios开发——UI控件之UIControl基类
- 【IOS 开发学习总结-OC-50】★ios开发之UI控件——UIToolBar(工具栏)
- 【IOS 开发学习总结-OC-47】★ios开发之UI控件——UIAlertView与 UIActionSheet
- 【IOS 开发学习总结-OC-53】★★ios开发UI 控件——UISearchBar与UISearchDisplayController
- 【IOS 开发学习总结-OC-54】★★ios开发UI 控件——UINavigationBar 与UINavigationController
- 【IOS 开发学习总结-OC-58】★UI控件——UITabBar 与UITabBarController
- 【IOS 开发学习总结-OC-46】★ios开发之UI控件——UIProgressView 与 UISlider(另:可拉伸图片)
- 【IOS 开发学习总结-OC-18】★★objective-c面向对象之——OC的包装类与对象处理
- iOS 开发学习之 User Interface(11)iOS事件处理机制及手势 与 MVC浅述
- 【IOS 开发学习总结-OC-30】★★OC之foundation 框架——集合(NSSet 与 NSMutableSet)
- 【IOS 开发学习总结-OC-31】★★OC之foundation 框架——字典(NSDictionary 与 NSMutableDictionary)
- ios开发-事件机制
- 【IOS 开发学习总结-OC-32】★OC之foundation 框架——谓词(NSPredicate)
- 面试题8:输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
- LeetCode Algorithms #283 <Move Zeroes>
- 2013年NOIP提高组 火柴排队
- 显卡驱动停止服务或直接黑屏的解决办法
- 面试题——存储过程和函数的区别
- 【IOS 开发学习总结-OC-40】★★ios开发之事件机制——控件获取方式与事件处理方式
- 2013年NOIP提高组 积木大赛
- 安卓定位问题
- 英语语法 简单式的过去时间
- linux常用命令总结
- 编写一个C#程序,要求定义一个行数和列数相等的二维数组, 并执行初始化,然后计算并输出数组两条对角线上的元素之和。
- javaweb 三大组件之Severlet
- 【欧拉函数模板】
- oracle超级用户connection