tableview直接滚动至最后一行的问题
tableview直接滚动至最后一行
类似聊天界面,tableview应该直接显示在最后一行,并且不应该有滚动的出现。
在网上查了很久,直接滚动至最后一行很容易实现,有两种方法比较好。
1. 调用scrollToRowAtIndexPath方法
-(void) scrollBottom
{
if ([self.messageData count]) { //messageData是数据源
NSIndexPath *indexPath=[NSIndexPath indexPathForRow:self.messageData.count- inSection:];
[self.chatTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}
}
2. 改变ContentOffset
self.chatTableView setContentOffset:CGPointMake(, 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,所以没有下滑的动作就显示在了最后一行
tableview直接滚动至最后一行的问题的更多相关文章
- tableview直接滚动至最后一行
类似聊天界面,tableview应该直接显示在最后一行,并且不应该有滚动的出现. 在网上查了很久,直接滚动至最后一行很容易实现,有两种方法比较好. 1. 调用scrollToRowAtIndexPat ...
- Android 如何实现带滚动条的TextView,在更新文字时自动滚动到最后一行?
1.在布局文件中放置一个TextView,给它添加scrollbars和fadeScrollbars两个属性. 如下设置:滚动条为垂直滚动条,并且一直可见(当TextView中的文字行数超过页面能显示 ...
- JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行?
1.要使JTextArea带有滚动条,需将JTextArea对象添加到JScrollPane中. JTextArea logArea = new JTextArea(15, 35); //创建JTex ...
- Cocos2d-x教程(31)-TableView的滚动栏
欢迎增加Cocos2d-x 交流群:193411763 转载时请注明原文出处 :http://blog.csdn.net/u012945598/article/details/38587659 在非常 ...
- 【原创】ListView快速滚动至新添加一行(自动滚动)
在C#开发中我们经常要开发一些日志系统,尤其是基于ListView的日志显示系统.但是当日志增多是你是否有一些困扰,就是它为什么不会自动滚动至最后一行. 以下是一小段代码,希望可以帮助你. publi ...
- uitableview滚动到最后一行
本文转载至 http://mrjeye.iteye.com/blog/1278521 - (void)scrollTableToFoot:(BOOL)animated { NSInteger s = ...
- 设置tableview的滚动范围--iOS开发系列---项目中成长的知识三
设置tableview的滚动范围 有时候tableview的footerview上的内容需要向上拖动界面一定距离才能够看见, 项目中因为我需要在footerviw上添加一个按钮,而这个按钮又因为这个原 ...
- C# RichTextBox 滚动条 滚动到最后一行
使用RichTextBox控件用于显示数据时,滚动条只停留在开头,而我希望能够一直更新,显示最后一行的内容.解决方法记录于此. 转载自以下链接: http://blog.csdn.net/xelone ...
- C# TextBox 换行 滚动到最后一行
.要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true. 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻烦:) ...
随机推荐
- HIVE: Map Join Vs Common Join, and SMB
HIVE Map Join is nothing but the extended version of Hash Join of SQL Server - just extending Hash ...
- 在Visual Studio 2010中进行“项目重命名”的有效工具
地址:http://www.cnblogs.com/dudu/archive/2011/12/11/visual_studio_2010_project_rename.html 提示:这个工具一次 r ...
- 理解js中的自由变量以及作用域的进阶
如果你不知道什么是作用域,建议你先看什么是作用域链,什么是原型链.这篇文章,因为这些内容都是有关联性的. 什么是自由变量? 如我在全局中定义了一个变量a,然后我在函数中使用了这个a,这个a就可以称之为 ...
- 正则表达式之IP地址检验
String ipRegex = "^(\\d|[1-9]\\d|1\\d*|2[0-4]\\d|25[0-5])(\\.\\1){3}$"; /* * \\d|[1-9]\\d| ...
- read和write函数
读函数read ssize_t read(int fd,void *buf,size_t nbyte) 如果是ECONNREST表示网络连接出了问题. 写函数write ssize_t writ ...
- JAVA jdbc(数据库连接池)学习笔记(二) SQL注入
PS:今天偶然间发现了SQL的注入...所以就简单的脑补了一下,都是一些简单的例子...这篇写的不怎么样...由于自己没有进行很深的研究... 学习内容: 1.SQL注入的概念... 所谓SQL注 ...
- python之异常处理
异常处理是高级编程语言必备的一个功能模块. 一.异常基础 在编程过程中为了增加友好性.容错性和健壮性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大 ...
- js-二维数组和多维数组
一.二维数组的表示 myarray[][] 二.二维数组的定义 方法一: var a = new Array(); for(var i=0;i<3;i++){ //一维长度为3 a[i] = n ...
- DateTime to long
private static DateTime BaseTime = new DateTime(1970, 1, 1); 将unixtime转换为.NET的DateTime public static ...
- Gradle学习系列之五——自定义Property
在本系列的上篇文章中,我们讲到了增量式构建,在本篇文章中,我们将讲到如何自定义Project的Property. 请通过以下方式下载本系列文章的Github示例代码: git clone https: ...