如何在倒计时ios应用程序中使用用户输入?

时间:2012-12-03 02:21:55

标签: objective-c ios xcode countdown

我想从用户收集日期,将其转换为unix纪元时间并使用该纪元时间戳替换dateWithTimeIntervalSince1970之后的时间戳:在我的代码中。非常感谢任何帮助,谢谢!

-(void)updatelabel{
    NSCalendar *Calender = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
    int units = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *components = [Calender components:units fromDate:[NSDate date] toDate:destinationDate options:0];
    [dateLabel setText:[NSString stringWithFormat:@"%d%c  %d%c  %d%c  %d%c", [components day], 'd', [components hour], 'h',   [components minute], 'm', [components second], 's']];  
}


- (void)viewDidLoad {
    [super viewDidLoad];
    destinationDate = [NSDate dateWithTimeIntervalSince1970:1356088260];
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updatelabel) userInfo:nil repeats:YES];
}

1 个答案:

答案 0 :(得分:1)

如果您询问如何从用户收集日期,最简单的方法是使用UIDatePicker。假设您正在使用Storyboard或NIB,您可以从对象库中拖动控件并使用操作方法连接其“Value Changed”事件。

UIDatePicker

在您的操作方法中,您可以将日期设为:

- (IBAction)dateSelected:(UIDatePicker *)picker {
    NSDate *selectedDate = picker.date;
    // ...
}

如果您拥有来自用户的NSString,则可以使用NSDateFormatter将字符串转换为NSDate:

NSString *usersDateStr = @"12/01/2012" // this would be retrieved from the user.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"MM/dd/yyyy";
NSDate *selectedDate = [formatter dateFromString:usersDateStr];

无论哪种方式,一旦你有了一个日期对象,如果需要,你可以将它转换为NSTimeInterval:

NSTimeInterval time = [selectedDate timeIntervalSince1970];