创建一个调度方法,在Objective C(Xcode)中的7天轮换中显示自定义标签

时间:2012-01-10 15:22:08

标签: iphone objective-c ios xcode

我正在为我的学校制作应用程序。我们正在进行为期7天的轮换时间表...所以今天是G日,明天将是A日,B,星期五,星期一和星期一回到D.我想在我的应用程序的主页上放置一个UILabel将根据我们学校的AG表示法输出哪个“日期”......任何人都可以想到这样做的方法(初学者会理解)?

问题在于周一并不总是“A”日,因为我们进行了7天的周期,但每周只有5天上学。有什么方法吗?

我目前使用NSDateFormatter连接到一个字符串然后连接到UILabel以显示当周的当天,如果这有帮助的话。代码如下。

 - (void)viewDidAppear:(BOOL)animated
 {

   //get the date today

   NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
   [dateformatter setDateFormat:@"cccc, MMMM dd"];

  NSString *dateToday = [dateformatter stringFromDate:[NSDate date]];

   [currentdate setText:dateToday];


   //get the time today

   NSDateFormatter *timeformatter = [[NSDateFormatter alloc] init];
   [timeformatter setDateFormat:@"hh:mm a"];

   NSString *timeToday = [timeformatter stringFromDate:[NSDate date]];
   [currenttime setText:timeToday];

问题:

我会使用“setText:”将其输出到标签吗?我在我的.h中宣布了一个名为* letterday的插座,现在我正在尝试将这封信寄给它,然后在我的.m中:

[NSDate JL_currentRotationDayWithSchoolYearBeginningOnDateString:@"2011-09-12"];

[letterday setText: 

看起来不错吗?对不起我就这么落后了......

1 个答案:

答案 0 :(得分:2)

您可以在此处使用评论https://gist.github.com/1590955

查看整个类别的源代码

#import "NSDate+RotationScheduleFormatter.h"在您要使用该类别的每个实现文件中。然后使用以下方法调用获取当前轮换日:

[NSDate JL_currentRotationDayWithSchoolYearBeginningOnDateString:@"2011-08-01"];其中日期的格式为YYYY-MM-DD

这将返回RotationDay类型的枚举,kRotationDay[A-G]之一。

为了让假期休假和其他工作日下班,您需要进入.m文件并编辑名为+ (int)numberOfWeekdayBreakDaysBetweenSchoolYearBeginningDate:(NSDate *)beginningDate andEndDate:(NSDate *)endDate1的方法

在其中,您将看到一个名为weekdayBreakArray的数组,其中包含一些值(格式为YYYY-MM-DD)。删除这些测试值,并在工作日的每个休息日的每一天添加。 不要添加周末的日期。

<强>实施

假设存在名为UILabel的{​​{1}},您可以执行以下操作:

rotationLetter

以及更多RotationDay rotationDayInt = [NSDate JL_currentRotationDayWithSchoolYearBeginningOnDateString:@"2011-08-01"]; if (rotationDayInt == kRotationDayA) { [rotationLetter setText:@"A"]; } else if (rotationDayInt == kRotationDayB) { [rotationLetter setText:@"B"]; } 语句,直至到达else if

备注:

请记住在if语句中附加对此方法的调用,该语句检查您是在假期或周末,否则结果将不正确。另请注意,我没有使用手动保留/释放来优化此类用于内存管理,因为我不确定您是否使用ARC。 此外,如果您有下雪天或其他意外休息时整个系统都会失败,您无法及时更新应用。因此,我强烈建议您每次打开应用程序时从服务器下载日期数组,以防您需要动态更改。