NSTimer的简单练习

#import "ViewController.h"

@interface ViewController () <UIAlertViewDelegate>
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;
@property (strong, nonatomic) NSTimer *timer;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *playButton;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *pauseButton;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.pauseButton.enabled = NO;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
#pragma mark - 播放
- (IBAction)play:(id)sender {
    if (self.timeLabel.text.integerValue == 0) {
        [self alertTimeOverInfo];
        return;
    }
    self.playButton.enabled = NO;
    self.pauseButton.enabled = YES;
    //实例化NSTimer的两种方法
    /*
     1.将NSTimer对象添加到运行循环,并且使用NSDefaultRunLoopMode模式(页面有滚动时,NSTimer会暂停)
     */
    //self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeText) userInfo:@"改变时钟" repeats:YES];
    
    /*
     2.创建NSTimer对象,然后添加运行循环中,并使用NSRunLoopCommonModes模式,(页面有滚动时,NSTimer不会暂停)
     */
    self.timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(changeText:) userInfo:@"改变时钟" repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)changeText:(NSTimer *)timer
{
    NSLog(@"%@",timer.userInfo);
    NSInteger nowNumber = [self.timeLabel.text integerValue];
    self.timeLabel.text = [NSString stringWithFormat:@"%d",--nowNumber];
    
    if (self.timeLabel.text.integerValue == 0) {
        [self pause:nil];
//        [[[UIAlertView alloc] initWithTitle:@"提示框" message:@"时间到了" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"其他", nil] show];
        [self alertTimeOverInfo];
    }
    
    
}
#pragma mark - 暂停
- (IBAction)pause:(id)sender {
    self.playButton.enabled = YES;
    self.pauseButton.enabled = NO;
    
    
    [self.timer invalidate];
}
#pragma mark - 停止
- (IBAction)stop:(id)sender {
    [self pause:nil];
    self.timeLabel.text = @"10";
}
#pragma mark - 填出时间已到对话框
- (void)alertTimeOverInfo
{
        [[[UIAlertView alloc] initWithTitle:@"提示框" message:@"时间到了" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"其他", nil] show];
}
#pragma mark - 打印对话中按钮中的索引
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"%d",buttonIndex);
    //NSLog(@"%@",alertView);
}
@end


你可能感兴趣的:(NSTimer)