You could set your label to 5 and have the timer fire every 1 second instead of 5 and set repeat to YES
to make it fire every second.
Then in your method that the timer fires, have it decrement the label by 1 each time (would be easiest if you have an int variable, but you could do it with just the label). Then, when the label is at 0, you can stop the timer and call your real timer method.
For example:
-(void)showInView:(UIView*)v {
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
self.progress = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 30)];
self.progress.textColor=[UIColor redColor];
self.progress.text = @"5";
[self addSubview: self.progress];
}
-(void)timerFireMethod:(NSTimer *)theTimer{
int time = [self.progress.text intValue];
time--;
[self.progress setText:[NSString stringWithFormat:@"%@",time]];
if (time==0) {
[self.timer invalidate];
NSLog(@"bla bla time is out");
MTPopupWindowCloseButton* btnClose = [MTPopupWindowCloseButton buttonInView:self];
[btnClose addTarget:self action:@selector(closePopupWindow) forControlEvents:UIControlEventTouchUpInside];
}
}