2011-07-17 29 views
0

我需要创建一个循环,检测24小时过后,我的日历上的数字从1更改为2,然后2更改为3 ...一直到31.所以当它是31时它说31。数字在我的标签栏符号上,并且我使用石英绘制了数字,因此数字不是整数,而是写入数字的nsstring。显示的数字是6,当它应该是今天的日期17.不知道我错了哪里?日期改变时需要显示日期的数字吗?

这是到目前为止我的代码:

- (void)updateLabelForDate:(NSDate *)date { 
NSTimeInterval timeInterval = [date timeIntervalSinceReferenceDate]; 
NSInteger days = timeInterval/(60*60*24); 
NSArray *sloganArray = [NSArray arrayWithObjects: 
         NSLocalizedString(@"1", nil), 
         NSLocalizedString(@"2", nil), 
         NSLocalizedString(@"3", nil), 
         NSLocalizedString(@"4", nil), 
         NSLocalizedString(@"5", nil), 
         NSLocalizedString(@"6", nil), 
         NSLocalizedString(@"7", nil), 
         NSLocalizedString(@"8", nil), 
         NSLocalizedString(@"9", nil), 
         NSLocalizedString(@"10", nil), 
         NSLocalizedString(@"11", nil), 
         NSLocalizedString(@"12", nil), 
         NSLocalizedString(@"13", nil), 
         NSLocalizedString(@"14", nil), 
         NSLocalizedString(@"15", nil), 
         NSLocalizedString(@"16", nil), 
         NSLocalizedString(@"17", nil), 
         NSLocalizedString(@"18", nil), 
         NSLocalizedString(@"19", nil), 
         NSLocalizedString(@"20", nil), 
         NSLocalizedString(@"21", nil), 
         NSLocalizedString(@"22", nil), 
         NSLocalizedString(@"23", nil), 
         NSLocalizedString(@"24", nil), 
         NSLocalizedString(@"25", nil), 
         NSLocalizedString(@"26", nil), 
         NSLocalizedString(@"27", nil), 
         NSLocalizedString(@"28", nil), 
         NSLocalizedString(@"29", nil), 
         NSLocalizedString(@"30", nil), 
         NSLocalizedString(@"31", nil), 
         nil]; 
NSInteger usedSloganIndex = (int)days % [sloganArray count]; 
slogan = [sloganArray objectAtIndex:usedSloganIndex]; 
NSLog(@"Slogan: %@", slogan); 
NSLog(@"%i",usedSloganIndex); 

int x,y,width,height; 


x = 23; 
y = 440; 
width = 20; 
height = 20; 



CustomBadge *customBadge1 = [CustomBadge customBadgeWithString:slogan]; 


- (void)applicationSignificantTimeChange:(UIApplication *)application { 
[self updateLabelForDate:[NSDate date]]; 
} 


- (void)applicationDidBecomeActive:(UIApplication *)application { 
[self updateLabelForDate:[NSDate date]]; 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

// Override point for customization after application launch. 

// Add the tab bar controller's view to the window and display. 
[window addSubview:tabBarController.view]; 
[self addTabBarArrow]; 
[window makeKeyAndVisible]; 

[self updateLabelForDate:[NSDate date]]; 

return YES; 

}

感谢

回答

2

可以通知您当您的应用程序委托实施applicationSignificantTimeChange:日期改变。检查its documentation何时会被调用,但它包含您几乎可以肯定需要的时间。

+0

我已更新我的问题 – Dangermouse

+0

如果你想要今天的日期,你可以使用'NSDateComponents'。你所做的数学与当前日期无关。您已将秒数除以一天中的秒数,然后将其取为模31。这个数字与有意义的公历日期没有关系。这甚至不是一个月的平均天数。 –