您的位置:首页 > 移动开发 > IOS开发

程序日志--ios“迷你秒表”程序

2015-07-28 14:55 726 查看
交代一下我做程序的工具:mac os x虚拟机10.9.3 Xcode6 百度^-^ 参考书iPhone30天精通

程序介绍:做一个迷你秒表的程序,有开始计时,暂停计时,重新计时(将计时的时间归零)

在按照书上的程序做出来之后发现一个问题,就是多次按开始计时,计时的时间就加快了,即重复调用开始计时的方法,后来上网上查了一下,很多人都有遇到相同的问题,我便借鉴了一下别人的博客,利用了两个条件语句解决了这一问题,参考:http://sinno.blog.163.com/blog/static/2156171902013092625208/ 完全可以看下面的博文不用看参考资料。

程序贴出来,同时注解在程序上面。

// ViewController.h

// 10

//

// Created by 李迪 on 15-7-27.

// Copyright (c) 2015年 李迪. All rights reserved.

//

#import <UIKit/UIKit.h>

#import<Foundation/Foundation.h>

@interface ViewController : UIViewController{

IBOutlet UILabel * time;

NSTimer * timer;

}

@property UILabel *time;

@property NSTimer *timer;

-(IBAction)start;

-(IBAction)stop;

-(IBAction)reset;

-(void)showAct;

@end

// ViewController.m

// 10

//

// Created by 李迪 on 15-7-27.

// Copyright (c) 2015年 李迪. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()



@end

@implementation ViewController

@synthesize time,timer;

-(IBAction)start{//计时器当然是要从0开始查了,我在viewDidLoad里面让label.text初始值为0,在reset里也让它的值为0

if(!timer)//在.h文件里面只是定义了timer这一属性,但是并没有给timer这一属性赋值,所以timer是一个空值的计时器对象。如果timer

//对象为空成立,则创建一个相应的timer对象,否则什么也不做。这样就保证了多次按start也不发生加速计时的情况了。

timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(showAct) userInfo:nil repeats:YES];//scheduledTimerWithTimeInterval为对象定义计时的时间间隔属性值,1.0表示1秒

//target定义对象执行的目标,“self”代表本体

//selector为对象定义时间选择的方法,而showAct是自己定义的一个方法,将数字累加,让结果在label上显示出来

//userInfo是用户信息,不需要管

//repeats表示定时器是否重复执行,一定要选yes,否则定时器便只查1秒就不再继续查了

}

-(IBAction)stop{

if(timer){//这里的if是和start的if相互呼应的,如果没按start直接按stop便没有意义

if([timer isValid]){//如果上一个if有意义的话,判断程序本身的timer是否在运行,不运行也同样没有意义

[timer invalidate];//终止计时器方法

timer = nil;//与创建一个start相呼应,我在这里让这个对象为空

}

}

}

-(IBAction)reset{

time.text = @"0";

}

-(void)showAct{//前面所调用的方法,即累加器+显示器

int currentTime = [time.text intValue];

int newTime = currentTime +1;

time.text = [NSString stringWithFormat:@"%d",newTime];

}



- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

time.text = @"0";

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: