我正在嘗試設置倒數計時器。我有兩個視圖控制器:ViewController和EditViewController。 ViewController有兩個小時和分鐘的標籤。 EditViewController有一個UIDatePicker和一個保存按鈕。當用戶在UIDatePicker上選擇一個時間並點擊保存時,它們將被重定向回ViewController,並且時間和分鐘標籤將填充所選時間和當前時間之間的差異。這是自動更新,直到差異爲0.我有問題試圖讓小時和分鐘正確顯示在ViewController標籤上。這裏是我的代碼:倒數計時器:更新控制器視圖標籤
ViewController.m
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.hourLabel.text = self.hourText;
self.minuteLabel.text = self.minuteText;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
EditViewController.h
@interface EditViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIDatePicker *datePicker;
@property (weak, nonatomic) IBOutlet NSString *currentTimeString;
@property (weak, nonatomic) IBOutlet NSString *endTimeString;
- (IBAction)saveButton:(id)sender;
- (IBAction)cancelButton:(id)sender;
-(void)updateTime;
@end
EditViewController.m
#import "EditViewController.h"
#import "ViewController.h"
@interface EditViewController()
@end
@implementation EditViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)saveButton:(id)sender
{
NSCalendar *now = [NSCalendar autoupdatingCurrentCalendar];
NSInteger currentTime = (NSHourCalendarUnit | NSSecondCalendarUnit);
self.datePicker.date = [now dateFromComponents:[now components:currentTime fromDate:self.datePicker.date]];
NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];
[self dismissViewControllerAnimated:YES completion:nil];
}
-(void)updateTime
{
NSInteger timeLeft = ((NSInteger)[self.datePicker.date timeIntervalSinceNow]);
NSInteger minutes = (timeLeft/60) % 60;
NSInteger hours = (timeLeft/3600) % 24;
ViewController *controller;
controller.hourText = [NSString stringWithFormat:@"%ldi",(long)hours];
controller.minuteText = [NSString stringWithFormat:@"%ldi",(long)minutes];
NSLog(@"The time is %ld",(long)timeLeft);
}
- (IBAction)cancelButton:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
任何幫助表示讚賞。提前致謝。