Upside - down chat
Opened this issue · 0 comments
lubomirez commented
Firstly thx for this great control. If someone wants to have chat sorted newest on top, change reload data in UIBubbleTableView.m to:
- (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)
NSMutableArray *bubbleData = [[[NSMutableArray alloc] initWithCapacity:count] autorelease];
#else
NSMutableArray *bubbleData = [[NSMutableArray alloc] initWithCapacity:count];
#endif
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 obj2, id obj1)
{
NSBubbleData *bubbleData1 = (NSBubbleData *)obj1;
NSBubbleData *bubbleData2 = (NSBubbleData *)obj2;
return [bubbleData1.date compare:bubbleData2.date];
}];
NSDate *last = [NSDate dateWithTimeIntervalSince1970:0];
NSMutableArray *currentSection = nil;
for (int i = 0; i < count; i++)
{
NSBubbleData *data = (NSBubbleData *)[bubbleData objectAtIndex:i];
if (([last timeIntervalSinceDate:data.date] > self.snapInterval) || (i==0))
{
#if !__has_feature(objc_arc)
currentSection = [[[NSMutableArray alloc] init] autorelease];
#else
currentSection = [[NSMutableArray alloc] init];
#endif
[self.bubbleSection addObject:currentSection];
}
[currentSection addObject:data];
last = data.date;
}
}
[super reloadData];
}
If you want, add it as option ;)