2012-04-28 73 views
0

我已經檢查Tapku日曆代碼了一下,搜索和閱讀都在這裏但是,沒有相關的問題和答覆,似乎真的提供正確的解決問題的方法:如何通過編程或點擊選擇多個日期。就在兩個相鄰的日期,一個簡單的藍色瓷磚會逗我開心:-)下後,似乎也有類似的問題,但答案是行不通的。除非月份發生變化,否則代碼中的位置不會被觸及 - 這不完全是我正在尋找的。 selectDate的更高級的實現會更好:它會選擇多個日期。但只要在圖書館中調整好地方,這將是一個很好的開始,任何人都可以更熟悉代碼。非常感激。的iOS:Tapku日曆:需要選擇多個日期

iOS: Tapku calendar library - allow selecting multiple dates for current month

回答

0

所以有點單步執行代碼後,我用錘子這種基本的方法。我採用了大部分TKCalendarMonthView.m-> selectDay:day方法的代碼。我基本上創建方法創建一個新對象TKCalendarMonthTiles和在細節填充,然後添加子視圖到主TKCalendarMonthTiles對象(個體)。我標記子視圖,所以我可以先幹掉他們,如果他們在方法的開始存在,因爲我只是想選擇一個額外的一天(如果你希望他們留在UI,你可以離開附着子視圖)。我不追蹤日期或存儲它們或任何東西,但這符合我的需求。

的想法是簡單地創建與您要使用包含實際的「日期」的文本標籤,如「14」,然後添加這些意見子視圖自正確的平鋪圖像和一個視圖。借來的代碼做所有計算。「這裏的」該日期瓦駐留在網格中,那麼該視圖在正確的位置繪製。代碼:

- (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:一天,以及在TKCalendarMonthView.m結束 - > - reactToTouch:下來。迄今爲止有限的測試非常好。瞭解爲什麼時區設置一直在考慮明天(我在太平洋時區)。

乾杯,邁克爾