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属性设置多行文本的时候可能会遇到点麻烦:) ...
随机推荐
- Logstash日志搜集
软件准备: logstash-2.1.0.zip elasticsearch-2.1.0.zip kibana-4.3.0-windows.zip Redis-x64-2.8.2104.msi 下载地 ...
- Tips5:通过 alt+鼠标左键 来完全展开或收缩层级
通过 alt+点击 可以完全地展开或关闭unity中的各种层级关系,包括Hierarchy视图 或 Project视图中的. 上图中,第一次点击没有按住ALT键,可以发现子项目并没有被展开,而第二次是 ...
- mysql Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
使用mysql的时候,用到int类型的蛮多,需要注意一下: 1. 值的范围 Type Storage Minimum Value Maximum Value (Bytes) (Signed/Uns ...
- Hadoop第8周练习—Pig部署及统计访问日志例子
:搭建Pig环境 :计算每个IP点击次数 内容 运行环境说明 1.1 硬软件环境 线程,主频2.2G,6G内存 l 虚拟软件:VMware® Workstation 9.0.0 build- ...
- android和ios,音频互通方案
好久不更新博客上,从年前从公司辞职,这半年以来,一直靠做一些外包app养活自己!也算是达成了自己年前制定的目标!可是也想着总不能一直做外包吧,所以决定做一些自己觉得有意思的app,挂到应用商店上和ap ...
- js-string字符串对象
js-string字符串对象 一.String 对象描述 字符串是 JavaScript 的一种基本的数据类型. String 对象的 length 属性声明了该字符串中的字符数. String 类定 ...
- sqlite3存储格式
本篇介绍sqlite3数据库文件的存储格式.通过阅读源读源代码可以知道sqlite的设计思想.一个sqlite数据库文件对应着一个数据库.sqlite将数据库文件划分大小一致的存储(以区分内存)页面, ...
- BZOJ3732 解析报告//LCA,最小生成树
3732: Network 题目描述 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的 ...
- 第二sprint总结
总结:在第二轮sprint中,团队的开发工作出现了极大的懈怠,团队成员分配的工作完成情况较差,进度较慢,希望能在最后一周中,完成预定的功能模块 个人贡献分: 124陈彦生:22=20*5*22% 14 ...
- 介绍两种风格的URL
两种风格的“动态资源”——统一资源定位符(Uniform Resource Lactor,URL) 当前互联网上主要有两种主要风格的URL: 第一种直接在URL中知名文件(比如xxx.php,xxx. ...