【发布时间】:2014-11-17 16:33:58
【问题描述】:
我在 viewDidLoad 中有以下代码。我想比较我保存在 nsuserdefaults 限制时间中的 nsdate。
if ([[NSDate date]timeIntervalSinceDate:[restrictionTime objectForKey:@"time"]] < 86400) {
ResultsViewController *destinationViewController = [[ResultsViewController alloc]init];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
destinationViewController = [storyboard instantiateViewControllerWithIdentifier:@"results"];
[self presentViewController:destinationViewController animated:NO completion:^{
}]; // !!!!! this line
}
当它到达代码中指定的行时,应用程序会递归运行 viewDidLoad。 我要做的就是比较现在的时间和我保存的时间NSUserDefaults。如果不到一天,那么它将呈现另一个 viewController。
*如果我注释掉上面指定的行,它运行良好。
NSLog(@"%f", [[NSDate date]timeIntervalSinceDate:[restrictionTime objectForKey:@"time"]]);
上面的 NSLog 返回 2167.23445。
【问题讨论】:
-
在视图出现之前不要显示任何视图控制器!
-
在视图生命周期中调用
–viewDidAppear:方法之前,您不应尝试将新视图推送到导航堆栈中。
标签: ios objective-c nsdate