2014-02-15 45 views
0

我想创建一个按钮,带我到另一个视图控制器,并自动开始从3到0的倒计时,但我不知道如何设置其他视图控制器倒计时。这是我试过的代码:自动启动倒计时Xcode XIB

@implementation TestViewController 

-(IBAction)test:(id)sender { 
    CountdownViewController *cdvc = [[CountdownViewController alloc] 
initWithNibName:@"CountViewController" bundle:nil]; 
    [self.navigationController pushViewController:cdvc animated:YES]; 
} 

@implementation CountdownViewController 

int maintInt = 3; 
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown) userInfo:nil repeats:YES]; 

-(void)countDown { 
    maintInt -= 1; 
    count.text = [NSString stringWithFormat:@"%i", maintInt]; 
    if(maintInt==1){ 
     [timer invalidate]; 
    } 
} 
+0

你的代码对我来说似乎还行。你遇到的问题究竟是什么?倒计时视图控制器中的 – Merlevede

+0

实际上它表示未声明的标识符自身。我想我应该在其他地方添加int和nstimer,但我不知道在哪里。 – Atlas

+0

行上的错误'int maintInt = 3;'?因为如果是这样的话,你不能在这样的方法之外添加代码。 –

回答

0

你必须把你的倒计时代码的方法,你应该在viewDidLoadviewWillAppear方法调用关于您的需求。

@implementation TestViewController 

-(IBAction)test:(id)sender { 
    CountdownViewController *cdvc = [[CountdownViewController alloc] 
initWithNibName:@"CountViewController" bundle:nil]; 
    [self.navigationController pushViewController:cdvc animated:YES]; 
} 

@end 

@implementation CountdownViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // .. customize your views here .. 

    // Initialize the timer once your view has been loaded. 
    // 
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown:) userInfo:nil repeats:YES]; 
} 


static int maintInt = 3; 

- (void)countDown:(NSTimer *)timer { 
    count.text = [NSString stringWithFormat:@"%i", maintInt]; 
    maintInt -= 1; 

    if (maintInt == 0 && timer) { 
     [timer invalidate]; 
     timer = nil; 
    } 
} 

@end