• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > iOS基础控件关于ios的表示图问题,UITableView

iOS基础控件关于ios的表示图问题,UITableView

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了ios uitableview,ios uitableviewcell,uitableview,uitableviewcell,uitableview详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:iOS基础控件 关于ios的表示图问题,UITableView
描述:

就是在删除某行的时候为什么要先删除数据模型中的实例
例如以下例子:

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [_items removeObjectAtIndex:indexPath.row];
    //为什么要有以上代码,不要以上代码为什么不行,_items是一数组,而且放在后面这行代码的后面也不行这是为什么

    NSArray *indexPaths = @[indexPath];  //还有这段代码能具体解释下吗
    [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
}

解决方案1:

[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];

上述代码你可以看作

[self.tableView reloadData];

两者区别在于,第一种只是针对某一行(Cell)删除,而不必更新整个UITableView而造成资源浪费,同时亦提供了更好看的特效;第二种方法更生硬一些

光这个方法很难有说服力,下面我拿

[tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];

来做例子

假设我们是新增行,如果你先调用了insertRowsAtIndexPaths:withRowAnimation:,
UITableView将调用tableView:cellForRowAtIndexPath:去获取新增行的cell

想必在代码tableView:cellForRowAtIndexPath:里面你们都会这样写

NSDictionary *dataDictionary = _items[indexPath.row];

很明显因为你没有添加数据,这里会造成访问越界

这就是为什么在更新UITableView的UI时候,必先进行数据更新的原因

解决方案2:

NSArray *indexPaths = @[indexPath];
这行代码新建了一个数组指针,指向传过来的下标。注意,这只是个指针,对其的操作会影响到indexPath
如果你在下面那行中将object删去,那么指针指向的indexPath也会受到影响,因而之后再调用indexPath的时候,其值已经发生改变。建议你在这两行代码之中,在日志里输出indexPath的值(或者row的值),看看是否发生了变化。

解决方案3:

首先解释下

[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];

这个是对界面的操作,用了点动画删除了你要删除的那一行,只是操作UI,不操作数据。

然后

[_items removeObjectAtIndex:indexPath.row];

这个才是真正的操作数据。你这个_items应该是tableView的dataSource吧?只有在操作UI的时候把数据源(_items)里边的数据真正的删除了,在

[tableView reloadData]

的时候,你之前删掉的数据才不会再重新显示出来啊。

至于那两行代码为什么必须是那个顺序,就不知道了...希望有高手来回答一下,我们学习一下~

回答中有不对的地方请各位批评指正


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • UITableViewCell加载多张图片导致内存异常暴增
  • iOS基础控件IOS的UITableView问题
  • UITableView显示富文Html列表,有什么实现方案
  • iOSUITableViewCell按钮点击状态为什么刷新以后会变回到为未点击状态
  • 如何获取UITableView编辑模式下的系统自带手势?
  • swiftUItableViewCell怎么自定义添加控件、设置样式
  • ListView点击事件一个手指点击UITableViewCell不响应
  • 无法删除文件无法读源文件或磁盘UITableView无法滚动到底部
  • ios开发,UITableViewCell上的控件被其他的cell遮挡了?
  • uitableview如何将每行添加两个cell,数据是后台传输的

相关文章

  • 2017-06-05 iOS蓝牙链接打印机如何将图片转化为打印机可以识别的数据?
  • 2017-06-05 qttabbartabbar
  • 2017-06-05 请教ios音乐播放时,界面动态显示图片的问题?动不起来我的图片。
  • 2017-06-05 什么时候看到的月亮最大xib看不到布局
  • 2017-06-05 ipad2ios6到底該不該兼容iOS6?
  • 2017-06-05 我一个tableView滑动到底部,但是总是没有滑动到最底部,会有一小段没滑动下去
  • 2017-06-05 如何通过InterfaceBuilder设置数组的值
  • 2017-06-05 如何避免通过[[alloc]init]创建iOS单例类
  • 2017-06-05 app开发大家平常开发app时如何写测试数据接口的?
  • 2017-06-05 新手跪求各位大神给一个iOS端的crc16校验程序!!!!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • IOSswiftcollectionVIew与cell的上部间距怎么调整
    • 请大神指点迷津数据可以赋值到控件上,但是一滑动tableView就工程就崩溃了
    • js获取圆坐标iOSUITextView获取某一行的文本
    • 拿到一个tableview的高度,设置另一个tableview的一个cell的高度
    • 关于iOS内存管理的问题
    • 能否实现NSMutableSet或者NSHashTable进行自定义对象的不重复读取、写入
    • 自己实例化的delegate不能执行吗
    • ReactNative程序IOS模拟器显示太大,怎么调整?
    • oc循环引用问题
    • 车管所违章记录查询如何记录我司程序所耗费的电量及流量?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有