1

ちょっとchat.soのデモを作りたいので、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 に答える