Iphone开发(三)按钮的响应控制

原创 2012年03月26日 10:41:17

holydancer原创,如需转载,请在显要位置注明:转自holydancer的CSDN博客,原文地址:

http://blog.csdn.net/holydancer/article/details/7393866


上次我们介绍了helloWorld的实现原理,其中大部分代码都是项目模板自动生成的,今天我们来在研究一下如何在Iphone应用中添加按钮和按钮的监听,首先新建一个项目:


然后在自动生成的文件中打开xib文件并进行如下操作,拖一个label,两个button,并将内容分别发为如图所示:


现在我们就要用到一个新概念了,那就是输出口和行为,输出口的关键字是IBOutlet,这只是一个单纯的关键字,但是在xcode开发中,使用该关键字声明的变量可以和xib文件中画出来的控件相联系,有点儿类似于android开发中的findViewById,行为的关键字是:IBAction.该关键字用来修饰方法,使用该关键字修饰的方法可以和xib文件中的控件的各种事件绑定,使用IBAction修饰的自定义方法会有一个参数sender,可以用来传递xib中控件的一些属性,比如标题或者什么的。好了,看代码,我们先在viewController.h中用IBOutlet声明一下label和两个button,以及用IBAction修饰的响应方法。

viewController.h:


左边的小圆圈表示可以和xib文件中的控件相连,但是是空心的,说明还未连接。下面我们在viewController.m中将其实现:

viewCotroller.m:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize label;
@synthesize bu1;
@synthesize bu2;
-(IBAction)click:(id)sender
{
    label.text=[sender titleForState:UIControlStateNormal];//1
}
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end
代码1中的sender是指触发该方法的控件,titleForState是取出该控件的title,在正常状态下,因为button等控件是有正常状态,按下状态等区别的。取出title后将其赋给label,这样就可以实现点击不同的button来改变label的内容了。

另外,xib文件和viewController类的实例是通过interfaceBuilder来连接的,interfaceBuilder构建的xib文件中会有一个File's Owner,其实就是指的viewController类的实例,通过viewController实例来控件数据和视图。好了,下面需要把view和viewController联系起来了,方法非常简单:

第一步,先将xib文件代表的view和File's Owner代表的viewController联系起来,只需要在xib界面按下Control键,单击File's Owner并拖拽到View视图上即可。


第二步,将view中的三个控件与viewController中的三个输出口声明的变量相连接,如下图所示,在xib中选中一个控件时,在右上角一个向右箭头的图标表示:connection insector(连接检查)会出现一个new referencing outlet,这时点击右边的小圆圈往File's  Owner上面拖拽,拖到File's Owner上后会找到在viewController中定义的控件名,选择即可。bu1,bu2同理。


这样三个控件就和viewController中的控件相绑定了,我就是你你就是我,就可以进行操作了,但是现在我们绑定的只是控件而已,button的click方法我们还没有和button绑定,这时我们需要这样来:点击bu1后我们会在右边发现一栏如下图叫sent Events,代表该button的一些事件,里面有一个touch up inside,表示手指离开屏幕时,最后接触位置在该button上,也就是点击方法了,这时我们点击右边的小圆圈拖到File's Owner上,在出现的列表中选择我们定义好的click方法即可。bu2同理。


这时我们就将所有的控件和响应方法从xib文件对应到了viewController对象,我们在点击不同的button时,会根据sender找到button的title将其内容赋给label。好了,一起见证奇迹吧:


是不是很简单啊,基实还是表现了MVC的模式,controller连接view和model,而视图和数据老死不相往来。


关键字:Iphone开发,iphone 基础 入门 ,button ,label ,interfaceBuilder 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Xcode view button 链接到 事件

拖到代码区即可
  • wide288
  • wide288
  • 2013年11月17日 22:58
  • 2900

IOS入门学习(三):基本交互功能之button按钮

用户的基本交互是IOS的开发的基本要求,在介绍交互功能之前,需要先看一下MVC方法。MVC即为模型(Mode):保存应用程序数据的类,Xcode中使用Core Data;视图(View)包括窗口、控件...
  • rhwstar
  • rhwstar
  • 2014年02月16日 23:14
  • 14997

iphone开发之UIButton按钮的使用(一)拖线实现 多个按钮分别用多个方法实现事件监听

1、什么是按钮? (1)UIKit框架提供了很多的UI控件,但并不是每一都很常用,有些控件可能一年之内都用不上,有的控件可能天天用,比如UIButton、UILabel、UIImageView、UIT...
  • u013087513
  • u013087513
  • 2015年08月25日 20:06
  • 1072

4 - Swift之1 - 简单的按钮与事件

博客目录链接 本节代码下载:点击打开链接 1. 声明: 本博客仅仅用于学习,水平不足的地方欢迎各位指导。 2. 环境:  MAC : 10.10.1 Xcode:6.1.1 ...
  • cj_gameboy
  • cj_gameboy
  • 2015年01月21日 00:16
  • 15955

IOS Sent Events 事件

Did End on Exit :用户点击return或者done按钮 Editing Changed :字符增减,Cursor改变位置等 Editing Did Begin :当field得到焦点 ...
  • wyoeap
  • wyoeap
  • 2014年02月07日 15:42
  • 3124

利用xib自定义UITableViewCell,xib中的button不能响应点击事件

本人利用的xib自定义的UITableviewCell,但是自定义的UIButton不能响应点击事件,点击button时都是DidselectRow方法执行, 自己的代码贴一下: ...
  • jbb0403
  • jbb0403
  • 2015年08月12日 14:51
  • 2723

xib中button事件不响应

今天在做tableView的头视图自定制,在上面贴了button,frame为头视图的frame,但是点击事件没有响应。 原因:button的alpha设为0了,这样就不能捕捉到事件了。。。背景色设...
  • qtds8810
  • qtds8810
  • 2015年12月11日 19:27
  • 944

在android中button响应的两种方式

1. 在布局文件中添加button的监听名字 Android:onClick=”buttonOnClick” 例如: Button         android:id="@+id/button2" ...
  • abc5382334
  • abc5382334
  • 2013年08月15日 11:34
  • 9110

iOS中全局悬浮按钮,类似IPhone中的AssistiveTouch

前提:当时看到别人写过这个类似AssistiveTouch的demo,但是有问题,第一改变不了位置、第二切换页面后无法使用、第三运行时偶尔会崩溃。然后自己就去度娘、论坛中都查了一些资料,然后结合起来写...
  • iosWorker
  • iosWorker
  • 2016年01月22日 15:42
  • 6864

cocos2d-x中添加TV按键响应

最近有个机顶盒项目,需要用到遥控器的方向键在游戏中控制方向。 如果是一般Android设备、iOS设备或Win32平台,cocos2d-x提供了“CCAccelerometer”类,可用于游戏控...
  • a102111
  • a102111
  • 2015年03月27日 17:48
  • 2106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Iphone开发(三)按钮的响应控制
举报原因:
原因补充:

(最多只允许输入30个字)