1

嘿,我想做一个聊天演示。所以当我为它打开 UITableView 时,它应该从最后一个项目显示,上一个项目应该在上边。即,我想在用户打开时自动滚动我的 UITableView 到最后一行聊天画面。我该怎么办?

我的代码是-

cell = [tv dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];
}

    [lblName setFont:[UIFont fontWithName:@"Arial" size:12]];
    lblName.lineBreakMode = NSLineBreakByWordWrapping;
    lblName.numberOfLines = 0;
    lblName.text=[arrUsername objectAtIndex:indexPath.row];
    lblName.textColor = [UIColor blackColor];
    [lblName setBackgroundColor:[UIColor grayColor]];
    if ([[arrCommentUid objectAtIndex:indexPath.row] isEqualToString:@"1"]) {
        [lblName setTextAlignment:NSTextAlignmentLeft];
    }
    else

请帮忙!!它只是 UITableView 的 optional.cell 的代码

4

3 回答 3

3

试试这个聊天应用程序

SSMessagesviewcontroller
stbubbletableviewcell
bubblethingie
uibubbletableview
styledchat
acanichat

你也可以使用

   [tableView reloadData];
   int lastRowNumber = [tableView numberOfRowsInSection:0] - 1;
   NSIndexPath* ip = [NSIndexPath indexPathForRow:lastRowNumber inSection:0];
   [tableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionTop animated:NO];
于 2013-07-08T05:24:06.203 回答
0

为此,您应该按降序对数组进行排序。因此它将从最后一个到第一个显示您的数据。

为此,您可以使用 NSSortDescriptor

NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO selector:@selector(localizedCompare:)];
NSArray* sortedArray = [<YOURS_ARRAY> sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

享受编程!

于 2013-07-08T05:17:48.117 回答
-1

您可以滚动到最后使用scrollToRowAtIndexPath

[tableView scrollToRowAtIndexPath:lastIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];  

您可以使用获取最后一行的 indexPath

NSIndexPath *lastIndexPath = [NSIndexPath indexPathForRow:([yourTableAry count] - 1) inSection:0];

或者

NSIndexPath *lastIndexPath = [NSIndexPath indexPathForRow:([tableView numberOfRowsInSection:0] - 1) inSection:0];

编辑

如果您想进入行首,那么

NSIndexPath *firstRowIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];

[tableView scrollToRowAtIndexPath:firstRowIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
于 2013-07-08T05:26:56.663 回答