【问题标题】:iOS: Tapku Calendar: Need to select multiple datesiOS:Tapku日历:需要选择多个日期
【发布时间】:2012-04-28 06:07:51
【问题描述】:
【问题讨论】:
标签:
ios
date
calendar
tapku
【解决方案1】:
因此,在逐步浏览代码之后,我有了这个使用锤子的基本方法。我采用了 TKCalendarMonthView.m->selectDay:day 方法中的大部分代码。我创建的方法基本上是创建一个新的 TKCalendarMonthTiles 对象并填写详细信息,然后将子视图添加到主 TKCalendarMonthTiles 对象(self)上。我标记了子视图,因此如果它们在方法开始时存在,我可以首先删除它们,因为我只想再选择一天(如果您希望子视图保留在 UI 中,则可以保留附加的子视图)。我不跟踪日期或存储它们或任何东西,但这符合我的需要。
这个想法是简单地创建一个视图,其中包含您要使用的正确平铺图像以及包含实际“日期”的文本标签(如“14”)的视图,然后将这些视图作为子视图添加到 self.借用的代码对日期图块在网格中的“位置”进行所有计算,因此视图绘制在正确的位置。代码:
- (void)markDay:(int)day {
// First, remove any old subviews
[[self viewWithTag:42] removeFromSuperview];
[[self viewWithTag:43] removeFromSuperview];
int pre = firstOfPrev < 0 ? 0 : lastOfPrev - firstOfPrev + 1;
int tot = day + pre;
int row = tot / 7;
int column = (tot % 7)-1;
TKCalendarMonthTiles *deliveryTile = [[TKCalendarMonthTiles alloc] init];
deliveryTile.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"TapkuLibrary.bundle/Images/calendar/MyDateTile.png")];
deliveryTile.currentDay.text = [NSString stringWithFormat:@"%d",day];
if(column < 0){
column = 6;
row--;
}
CGRect r = deliveryTile.selectedImageView.frame;
r.origin.x = (column*46);
r.origin.y = (row*44)-1;
deliveryTile.selectedImageView.frame = r;
deliveryTile.currentDay.frame = r;
[[deliveryTile selectedImageView] setTag:42];
[[deliveryTile currentDay] setTag:43];
[self addSubview:deliveryTile.selectedImageView];
[self addSubview:deliveryTile.currentDay];
} // markDay:
我在 TKCalendarMonthView.m->selectDay:day 的末尾以及 TKCalendarMonthView.m->-reactToTouch:down 的末尾调用此方法。到目前为止,有限的测试非常好。去弄清楚为什么时区设置一直在考虑明天(我在太平洋时区)。
干杯,迈克尔