2013-03-08 26 views

回答

0

這的確是可能的,因爲在日曆視圖的例子,修改_refreshDataPageWithAtIndex是這樣的:

- (void) _refreshDataWithPageAtIndex:(NSInteger)index{ 

    UIScrollView *sv = self.pages[index]; 
    TKTimelineView *timeline = [self _timelineAtIndex:index]; 


    CGRect r = CGRectInset(self.horizontalScrollView.bounds, HORIZONTAL_PAD, 0); 
    r.origin.x = self.horizontalScrollView.frame.size.width * index + HORIZONTAL_PAD; 
    sv.frame = r; 



    timeline.startY = VERTICAL_INSET; 

    for (UIView* view in sv.subviews) { 
     if ([view isKindOfClass:[TKCalendarDayEventView class]]){ 
      [self.eventGraveYard addObject:view]; 
      [view removeFromSuperview]; 
     } 
    } 

    if(self.nowLineView.superview == sv) [self.nowLineView removeFromSuperview]; 
    if([timeline.date isTodayWithTimeZone:self.timeZone]){ 

     NSDate *date = [NSDate date]; 
     NSDateComponents *comp = [date dateComponentsWithTimeZone:self.timeZone]; 

     NSInteger hourStart = comp.hour; 
     CGFloat hourStartPosition = hourStart * VERTICAL_DIFF + VERTICAL_INSET; 

     NSInteger minuteStart = round(comp.minute/5.0) * 5; 
     CGFloat minuteStartPosition = roundf((CGFloat)minuteStart/60.0f * VERTICAL_DIFF); 

     CGRect eventFrame = CGRectMake(self.nowLineView.frame.origin.x, hourStartPosition + minuteStartPosition - 5, NOB_SIZE + self.frame.size.width - LEFT_INSET, NOB_SIZE); 
     self.nowLineView.frame = eventFrame; 
     [sv addSubview:self.nowLineView]; 

    } 

    if(!self.dataSource) return; 

    timeline.events = [NSMutableArray new]; 
    [self.dataSource calendarDayTimelineView:self eventsForDate:timeline.date andEvents:timeline.events success:^{ 
     [timeline.events sortUsingComparator:^NSComparisonResult(TKCalendarDayEventView *obj1, TKCalendarDayEventView *obj2){ 
      return [obj1.startDate compare:obj2.startDate]; 
     }]; 

     [self _realignEventsAtIndex:index]; 
     if(self.nowLineView.superview == sv) 
      [sv bringSubviewToFront:self.nowLineView]; 
    }]; 
} 

,然後改變你的eventsForDate功能看起來像這樣:

- (void) calendarDayTimelineView:(TKCalendarDayView*)calendarDayTimeline eventsForDate:(NSDate *)eventDate andEvents:(NSMutableArray *)events success:(void (^)())success { 

    [Model doSomethingAsync andSuccess:^(NSArray *classes) { 

     // .. Add stuff to events.. 

     success(); 
    }]; 
} 

我假設其他控件的模式非常相似。前提是您需要繼續格式化/佈局流程,直到獲取數據。