IOS学习笔记之七:第一个iphone小程序详解

1.附上代码先微笑


#import "CardGameViewController.h"


@interface CardGameViewController ()

@property (weak, nonatomic) IBOutlet UILabel *clickCountLabel;

@property (nonatomic) int countOfClick;

@end


@implementation CardGameViewController


-(void) setCountOfClick:(int)countOfClick

{

    _countOfClick=countOfClick;

    self.clickCountLabel.text= [NSString stringWithFormat:@"you have clicked %d times",self.countOfClick];

}

- (IBAction)countOfClickPlusOne:(UIButton *)sender {

    self.countOfClick++;

}


@end

看完斯坦福大学的视频,稍微简化了一下,写出了这段代码。

首先是view和view controller的链接,button是直接把响应事件函数拖过来,label是拖到interface的那个地方,自动生成property.

那么,如何让label对button的click 事件进行响应呢?

答案是通过property中的setter来设置。countOfClick只是变量名,而真正的实例变量名是_countOfClick.而在这里重写 setter之后,除了要把原来setter的功能保持住之外,

还需要把label的text和countOfClick这个属性链接起来。

(有一个小细节需要注意,就是view和controller链接完了之后,不可以直接重命名方法,需要解除链接之后,再拖一遍)

(还有一个小细节要注意,IBOutlet和IBAction都相当于void,编译器会直接把这两个syntax翻译成void,所以无需烦恼)

现在就有一个疑问,为什么只要设置setter之后,点击按钮,label就直接发生变化了呢?

梳理一遍流程,点击按钮->countOfClick增加1->。。。

明白了,因为countOfClick是同时调用了setter和getter这两个方法,也就是点击按钮的时候,其实self.countOfClick++这句话已经自动调用了setter.

还有第二个疑问,如果不直接拖动,而在相应的地方写上同样的代码,算不算是把view和controller链接起来了呢,试试先。

如果直接写方法,代码左边表示链接的圆圈会变成空心的,鼠标移动过去也没有显示,所以不可以,还是要拖动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值