Closed iTroyd23 closed 11 years ago
if we set snap interval, messages display based snapinterval. how to list out the message based on the data's date
update: replace the below method in uibubbletableview:
(void)reloadData { self.showsVerticalScrollIndicator = NO; self.showsHorizontalScrollIndicator = NO;
// Cleaning up self.bubbleSection = nil;
// Loading new data int count = 0;
self.bubbleSection = [[[NSMutableArray alloc] init] autorelease];
self.bubbleSection = [[NSMutableArray alloc] init];
if (self.bubbleDataSource && (count = [self.bubbleDataSource rowsForBubbleTable:self]) > 0) {
NSMutableArray *bubbleData = [[[NSMutableArray alloc] initWithCapacity:count] autorelease];
NSMutableArray *bubbleData = [[NSMutableArray alloc] initWithCapacity:count];
for (int i = 0; i < count; i++) { NSObject *object = [self.bubbleDataSource bubbleTableView:self dataForRow:i]; assert([object isKindOfClass:[NSBubbleData class]]); [bubbleData addObject:object]; } [bubbleData sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { NSBubbleData *bubbleData1 = (NSBubbleData *)obj1; NSBubbleData *bubbleData2 = (NSBubbleData *)obj2; return [bubbleData1.date compare:bubbleData2.date]; }]; NSMutableArray *currentSection = nil; NSMutableArray * datesArray = [[NSMutableArray alloc]init]; for (int i = 0; i < count; i++) { NSBubbleData *data = (NSBubbleData *)[bubbleData objectAtIndex:i]; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; [dateFormat setDateFormat:@"MMMM d, yyyy"]; NSString* timeString =[dateFormat stringFromDate:data.date]; if(![datesArray containsObject:timeString]) { [datesArray addObject:timeString]; } } for (int j = 0; j <[datesArray count]; j++) { currentSection = [[NSMutableArray alloc] init]; for (int i = 0; i < count; i++) { NSBubbleData *data = (NSBubbleData *)[bubbleData objectAtIndex:i]; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; [dateFormat setDateFormat:@"MMMM d, yyyy"]; NSString* timeString =[dateFormat stringFromDate:data.date]; if ([timeString isEqualToString:[datesArray objectAtIndex:j]]) { [currentSection addObject:data]; } } [self.bubbleSection addObject:currentSection]; }
}
[super reloadData]; }
if we set snap interval, messages display based snapinterval. how to list out the message based on the data's date
update: replace the below method in uibubbletableview:
(void)reloadData { self.showsVerticalScrollIndicator = NO; self.showsHorizontalScrollIndicator = NO;
// Cleaning up self.bubbleSection = nil;
// Loading new data int count = 0;
if !__has_feature(objc_arc)
self.bubbleSection = [[[NSMutableArray alloc] init] autorelease];
else
self.bubbleSection = [[NSMutableArray alloc] init];
endif
if (self.bubbleDataSource && (count = [self.bubbleDataSource rowsForBubbleTable:self]) > 0) {
if !__has_feature(objc_arc)
else
endif
}
[super reloadData]; }