2012-02-15 122 views
3

我正在开发基于日历的应用程序,并且我的客户需要在用户选择的特定日期设置图像。如何在日历视图中设置图像iPhone

例如,如果我选择1和20,图像将在两个日期上设置。

现在我可以设置图像仅对于一个日期即,如果我选择1的图像被设置在该日期,当我选择20上1中设定的图像将消失,图像将设置仅20.

任何人都可以请帮助我如何做到这一点。

在此先感谢。 enter image description here

+0

检查此链接:http://stackoverflow.com/a/8399779/845115 – 2012-02-15 12:04:00

+0

什么是你用来显示日历,这大部分是一些自定义的,因为iOS的SDK不提供组件这样。 – rckoenes 2012-02-15 12:06:08

+0

@MuditBajpai现在我可以设置图像的一个日期,但需要设置图像多个日期。请你帮我。 – suji 2012-02-15 12:06:23

回答

1

我终于找到了解决方案。我在该方法中完成了,并且专家可以为此提出更好的方法。

- (void)selectButtonForDate:(NSDate *)aDate { 



    if (selectedButton >= 0) { 
     NSDate *todayDate = [CalendarLogic dateForToday]; 
     UIButton *button = [buttonsIndex objectAtIndex:selectedButton]; 

     CGRect selectedFrame = button.frame; 
     if ([selectedDate compare:todayDate] != NSOrderedSame) { 
      selectedFrame.origin.y = selectedFrame.origin.y + 1; 
      selectedFrame.size.width = kCalendarDayWidth; 
      selectedFrame.size.height = kCalendarDayHeight; 
     } 

     button.selected = NO; 
     button.frame = selectedFrame; 

     self.selectedButton = -1; 
     self.selectedDate = nil; 
    } 

    if (aDate != nil) { 
     // Save 
     CGRect dayFrame; 
     NSDate *dayDate; 
     NSInteger numberOfWeeks = 5; 
    //  NSCalendar *calendar = [NSCalendar currentCalendar]; 
     // NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]]; 
    //  NSDate *todayDate = [calendar dateFromComponents:components]; 

     for (NSInteger aWeek = 0; aWeek <= numberOfWeeks; aWeek ++) { 
      CGFloat positionY = (aWeek * kCalendarDayHeight) + 60; 

      for (NSInteger aWeekday = 1; aWeekday <= numberOfDaysInWeek; aWeekday ++) { 
       CGFloat positionX = ((aWeekday - 1) * kCalendarDayWidth) - 1; 
       dayFrame = CGRectMake(positionX, positionY, kCalendarDayWidth, kCalendarDayHeight); 
       dayDate = [CalendarLogic dateForWeekday:aWeekday 
               onWeek:aWeek 
              referenceDate:[name referenceDate]]; 
      // NSLog(@" %@ todaydate [datesIndex objectAtIndex:[sender tag] %@",todayDate,[datesIndex objectAtIndex:[sender tag]]); 
       // NSDate *mmm = [datesIndex objectAtIndex:[sender tag]]; 
       if ([dayDate isEqualToDate:aDate]) { 
        NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults]; 

        flag = 1;     
        [n addObject:[NSValue valueWithCGRect:dayFrame]]; 



        [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:n] forKey:SaveMonth]; 
        [currentDefaults synchronize]; 
      } 



      } 
     } 
     if(flag == 1){ 

      flag = 0; 
      for (int i=0;i<[n count];i++){ 


       UIImageView *im = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"call.png"]] ; 
       CGRect myRect = [[n objectAtIndex:i] CGRectValue]; 
//    NSLog(@"n is %@",n ); 
//    NSLog(@"frame 111111111111111 = %@\n", NSStringFromCGRect(myRect)); 

       im.frame = myRect; 
       [self addSubview:im]; 


      } 
     } 
+0

嗨,我也尝试做同样的事情。你在使用KAL库还是其他的东西? – AtWork 2013-06-07 06:46:09