tableview直接滚动至最后一行

tableview直接滚动至最后一行

类似聊天界面,tableview应该直接显示在最后一行,并且不应该有滚动的出现。

在网上查了很久,直接滚动至最后一行很容易实现,有两种方法比较好。

1. 调用scrollToRowAtIndexPath方法

 -(void) scrollBottom
 {
     if ([self.messageData count]) {   //messageData是数据源
         NSIndexPath *indexPath=[NSIndexPath indexPathForRow:self.messageData.count-1 inSection:0];
         [self.chatTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
     }
 }

2. 改变ContentOffset

self.chatTableView setContentOffset:CGPointMake(0, self.chatTableView.contentSize.height -self.chatTableView.bounds.size.height) animated:YES];

不过接下来会遇到一个问题,在什么时候调用它们。

第一种方法在viewDidLoad和viewWillAppear中不能调用,因为那个时候cell还没生成,会报错,那么在viewDidAppear中调用是可行的,但这样用户点击进去能看到一个下滑的动作,并不好

第二种方法也一样,在viewDidLoad和viewWillAppear中调用没有效果,只有在viewDidAppear中调用,这样也一样有个下滑的动作。

解决方法

最后发现了问题的所在,移动到最后一行只是一个方法而已,点击去滚动条直接在最后一行和这个没有必然的联系。

这个要看上个页面是通过什么方法进入这个controller的,一般是两种方法。

1. 通过segue进来,那么默认就是拉倒了最后一行。

2.通过storyboard初始化viewcontroller然后push,就没有直接拉倒最后一行。我就是用这种方法的,最后的解决办法不是很好,是在

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath这个方法里添加:

if (self.isFirst) {
        [self scrollBottom];         self.isFirst = NO; }

这样只有点进去的时候会执行,此时页面还没有appear,所以没有下滑的动作就显示在了最后一行

时间: 2024-08-28 10:34:03

tableview直接滚动至最后一行的相关文章

tableview直接滚动至最后一行的问题

tableview直接滚动至最后一行 类似聊天界面,tableview应该直接显示在最后一行,并且不应该有滚动的出现. 在网上查了很久,直接滚动至最后一行很容易实现,有两种方法比较好. 1. 调用scrollToRowAtIndexPath方法 -(void) scrollBottom { if ([self.messageData count]) { //messageData是数据源 NSIndexPath *indexPath=[NSIndexPath indexPathForRow:se

UITableView 滚动到最后一行

? 1 2 3 4 5 if (self.tableView.contentSize.height > self.tableView.frame.size.height)    {        CGPoint offset = CGPointMake(0, self.tableView.contentSize.height - self.tableView.frame.size.height);        [self.tableView setContentOffset:offset an

设置tableview的滚动范围--iOS开发系列---项目中成长的知识三

设置tableview的滚动范围 有时候tableview的footerview上的内容需要向上拖动界面一定距离才能够看见, 项目中因为我需要在footerviw上添加一个按钮,而这个按钮又因为这个原因点不中,所以找到了解决办法! 添加如下方法即可 -(void)scrollViewDidScroll:(UIScrollView *)scrollView { self.tableView.contentSize = CGSizeMake(0,MZT_SCREEN_HEIGHT); }

Cocos2d-x教程(31)-TableView的滚动栏

欢迎增加Cocos2d-x 交流群:193411763 转载时请注明原文出处 :http://blog.csdn.net/u012945598/article/details/38587659 在非常多游戏中,我们会看到类似下图的功能: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjk0NTU5OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Sout

tableview 自动滑动到某一行

NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:10 inSection:0]; [[self tableView] scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];tableview 自动滑动到某一行

JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行?

1.要使JTextArea带有滚动条,需将JTextArea对象添加到JScrollPane中. JTextArea logArea = new JTextArea(15, 35); //创建JTextArea对象 logArea.setWrapStyleWord(true); //换行方式:不分割单词 logArea.setLineWrap(true); //自动换行 //给JTextArea添加垂直滚动条 JScrollPane logScroll = new JScrollPane(log

【原创】ListView快速滚动至新添加一行(自动滚动)

在C#开发中我们经常要开发一些日志系统,尤其是基于ListView的日志显示系统.但是当日志增多是你是否有一些困扰,就是它为什么不会自动滚动至最后一行. 以下是一小段代码,希望可以帮助你. public void addLog(string logString) { lock (_lockde) { string times = System.DateTime.Now.ToString(); ListViewItem lvi = logListView.Items.Add(times); lvi

uitableview滚动到最后一行

本文转载至 http://mrjeye.iteye.com/blog/1278521 - (void)scrollTableToFoot:(BOOL)animated { NSInteger s = [self.tableView numberOfSections]; if (s<1) return; NSInteger r = [self.tableView numberOfRowsInSection:s-1]; if (r<1) return; NSIndexPath *ip = [NSI

iOS:导航条滚动透明度随着tableView的滚动而变化

来源:HelloYeah 链接:http://www.jianshu.com/p/b8b70afeda81 下面这个界面有没有觉得很眼熟.打开你手里的App仔细观察,你会发现很多都有实现这个功能.比如美团外卖的首页模块,新浪微博的个人详情页面.要怎么样才能快速的实现这个功能呢!那下面由笔者来告诉你如何三行代码,集成这个功能... 原理介绍: 要想把一个view设计成透明的我们一下子就会想到两种方案,设置view的alpha值为0,或者设置view的backgroundColor为clearCol