tableView beginUpdates和tableView endUpdates不适用于iOS 5设备

问题描述:

我正在使用UITableView。我的应用程序在iOS 4设备上工作得很好,但是当我在iOS 5设备上安装相同的应用程序时,UITableView方法[tableView beginUpdates]和[tableView endUpdates]不执行所需的任务。tableView beginUpdates和tableView endUpdates不适用于iOS 5设备

我希望你有一个主意。 谢谢先进。

+0

当我在iOS 4设备中点击第1行设备时,第2行出现故障并为信息视图腾出空间。但是当我在iOS 5上尝试相同的过程时,新视图会在第二行显示。任何想法? – Deepak

+0

你可以发布代码,只是在ios5设备上测试过它,它的工作原理 – carbonr

我在代码中看到两件事情,实际上并没有在UITableView中插入/删除任何新行,并且beginAnimations块仅用于此目的。从doc

beginUpdates开始一系列方法的调用插入,删除或 选择行和接收器的部分。

  • (无效)beginUpdates讨论呼叫如果你想后续插入,删除和选择操作(例如 ,的cellForRowAtIndexPath:和indexPathsForVisibleRows)这种方法是 同时动画。这组方法必须以 对endUpdates的调用结束。这些方法对可以嵌套。如果 不在这 块内进行插入,删除和选择调用,则表格属性(如行计数)可能会失效。你不应该在组内调用reloadData;如果您在该组中调用此方法 ,则需要自行执行任何动画。

是我看到的第二件事是,你也在使用,现在discouraged in the documentation是动画块:

动画浏览 使用本节中的方法中的iOS 4不鼓励然后。改为使用基于块的动画方法。

我想尝试的是移动到新的代码与条件语句,具体取决于您的应用程序运行的iOS版本。

+0

感谢您的回复。我在做什么是...选择任何行,增加选定的行的高度,并在选定的行中放置一个新的视图...动态细胞高度的代码是 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { \t float height; \t \t 如果(indexPath == [的tableView indexPathForSelectedRow]) \t { \t \t高度= 90.0; } \t如果(indexPath = [的tableView indexPathForSelectedRow]!) \t { \t \t高度= 45.0; \t} \t返回高度; \t }相同的代码在iOS 4设备上工作正常。但不适用于iOS 5. – Deepak

+1

嗯我不确定你是否应该使用beginUpdates块,虽然它可能没有关系,但代码中最重要的是动画,在文档建议的新iOS 5中您可以使用新的动画方法而不是旧的动画块。另外,你可以尝试调用[myTableView reloadData];或者,或者尝试隐藏您的单元格,然后使用代码中已有的更新块再次显示它。希望我在帮助。 –