(七十一)关于UITableView退出崩溃的问题和滚动究竟部的方法

【TableView退出崩溃的问题】

近期在使用TableView时偶然发如今TableView中数据较多时,假设在滚动过程中退出TableView到上一界面。会引起程序的崩溃。经过网上查阅和思考我发现这样的情况出如今一个UIView控制器拥有一个TableView,TableView无法在UIView销毁前全然销毁,从而继续调用dataSource,而这时候UIView已经不可用了,会引发野指针错误。

避免方法非常easy,仅仅须要在UIView的dealloc方法中把dataSource设为nil就可以:

- (void)dealloc{

    self.tableView.dataSource = nil;

}

【TableView滚动究竟部】

对于即时聊天等应用,经常须要在新数据到来时把TableView滚动究竟部。这个需求能够通过TableView的scrollToRowAtIndexPath::实现,须要传入要滚动到的cell位置和滚动位置。

须要传入indexPath的最后一个位置,也就是要显示的数据数组的最后一个元素的索引,位置为底部。枚举名为

UITableViewScrollPositionBottom。例如以下:

Tip:一定要注意在没有数据时会造成indexPath.row=-1,此时应当直接返回。

- (void)scrollToTableBottom{

    if (_array.count < 1) {
        return;
    }
    NSInteger lastRow = _array.count - 1;
    NSIndexPath *lastPath = [NSIndexPath indexPathForRow:lastRow inSection:0];
    [self.tableView scrollToRowAtIndexPath:lastPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];

}
时间: 2024-12-26 02:20:16

(七十一)关于UITableView退出崩溃的问题和滚动究竟部的方法的相关文章

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到输入的搜索词设置一个数组里存放搜素词,判断搜索词在数组里是否存在如果存在删除原来的词,重新将新词放在数组最前面如果不存在直接将新词放在数组最前面即可,然后循环数组显示结果即可 热门搜索实现原理,当用户搜索一个词时,可以保存到数据库,然后记录搜索次数,利用redis缓存搜索次数最到的词,过一段时间更新

UI学习笔记---第十一天UITableView表视图高级-自定义cell

自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代码 cell中的空间如何显示Model中的信息 cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性 cell中重写Model的setter方法,把Model对象中的内容重新赋值给各个控件 M和V不直接通信,C负责M和V之间进行通

【leetcode 简单】 第七十一题 二叉树的所有路径

给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / 2 3 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x

“全栈2019”Java第七十一章:外部类访问静态内部类成员详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第七十一章:外部类访问静态内部类成员详解 下一章 "全栈2019"Java第七十二章:静态内部类访问外部类成员 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Jav

IOS第七天(3:UiTableView 模型和数据的分组的显示)

*************UiTableView模型和数据的分组的显示 #import "HMViewController.h" #import "HMHero.h" @interface HMViewController () <UITableViewDataSource, UITableViewDelegate> @property (nonatomic, strong) UITableView *tableView; @property (nona

Qt中内存泄露和退出崩溃的问题 delete

Qt中帮程序员做了一些内存回收的事情,但正因为这些反而让对此不熟悉的人会屡屡犯错. 收录一篇不错的文章: 在C++中学习过程中,我们都知道: delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大. Qt作为C++的库,显然是不会违背C++的前述原则的.可是: 在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的 delete 去哪儿了?! 注:本文暂不涉及智能指针(smart pointer)相关的东西,你可以考虑 Qt 智能指针学习

第七十一天 how can I 坚持

好闲的一天,明天不用加班了. mysql unix_timestamp()函数,返回自'1970-01-01 00:00:00'的到当前时间的秒数差,unix_timestamp(date),date可以是DATE或者DATETIME或者TIMESTAMP, DATE:20120608或者 2012-6-8或者2012-06-08. 种的玫瑰花出来了.虽然目前只出来两棵,但已经很开心了,下周要休假了.七天小长假.

UI第九、第十、第十一课UITableView

主要内容:UITableView 一.表视图 UITableView表示图:通常用来管理一组具有相同数据结构的数据 UITableView继承与UIScrollView,所有可以滚动,表示图的每一个数据都显示在UITableViewCell对象中,表示图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0开始 二.表示图的创建 每一行中要显示的数据,需要有一个数据源DataSource 那么需要遵守两个协议: - (NSInteger)tableView:(UITab

IOS第七天(1:UiTableView 的基本用法)

***表格控件 #import "HMViewController.h" @interface HMViewController () <UITableViewDataSource> @property (weak, nonatomic) IBOutlet UITableView *tableView; @end @implementation HMViewController #pragma mark - 数据源方法 // 如果没有实现,默认是1 - (NSInteger