这里有几件事:
1)如果你想要一个持续运行的计时器,不要在每次调用“ updateTime
”时使其无效(并且只调用scheduledTimerWithTimeInterval:
一次......而不是在每次updateTime
调用“”结束时)。
2)看起来你有一个标签来显示你的时间。您应该使您timeFormatter
的 ivar (实例变量,因此它只创建和设置一次),然后您可以通过以下方式设置格式:
timeFormatter.dateFormat = @"HH:mm:ss";
你应该准备好了。
您的新updateTime
方法可能如下所示:
- (void)updateTime {
currentTime = [NSDate date];
lblTime.text = [timeFormatter stringFromDate:currentTime];
}
3)如果你想要三个不同的标签,你需要为这三个标签声明 IBOutlets 并拥有三个不同的日期格式化程序。例如:
@interface YourViewController : UIViewController ()
{
IBOutlet UILabel * hourLabel; // you need to connect these in your XIB/storyboard
IBOutlet UILabel * minuteLabel;
IBOutlet UILabel * secondLabel;
NSDateFormatter * hourFormatter;
NSDateFormatter * minuteFormatter;
NSDateFormatter * secondFormatter;
}
然后,在您的 " viewDidLoad:
" 方法中,设置您的格式化程序:
hourFormatter = [[NSDateFormatter alloc] init;
hourFormatter.dateFormatter = @"HH";
minuteFormatter = [[NSDateFormatter alloc] init;
minuteFormatter.dateFormatter = @"mm";
secondFormatter = [[NSDateFormatter alloc] init;
secondFormatter.dateFormatter = @"ss";
最后,在您的 " updateTime
" 方法中:
- (void)updateTime {
currentTime = [NSDate date];
if(hourFormatter)
{
if(hourLabel)
{
hourLabel.text = [hourFormatter stringFromDate: currentTime];
} else {
NSLog( @"you need to connect your hourLabel outlet in your storyboard or XIB" );
}
} else {
NSLog( @"you need to allocate and init and set hourFormatter");
}
minuteLabel.text = [minuteFormatter stringFromDate: currentTime];
secondLabel.text = [secondFormatter stringFromDate: currentTime];
}