这个很酷的expanding tableView效果很好但是当你选择一些行时,就会出现一个奇怪的动画。
该表有多个部分,每个行在单击时都可以显示其他行。行外观和行为使用各种值在plist中构造,例如如果plist中的行的布尔“isExpandable”属性设置为true且其“additionalRows”属性设置为2,则该行可以展开以显示2个子行。
该表的问题是,当单击每个部分中的第一个单元格时,动画运行正常,但是当单击其他单元格时,它们会随机播放: -
我怀疑发生了奇怪的动画,因为在ViewController文件中的didSelectRowAtIndexPath下,由于此行单击了单元格,所有部分都会重新加载: -
tbl.reloadSections(NSIndexSet(index: indexPath.section), withRowAnimation: .Automatic)
我已尝试过以下操作,但它们会导致应用程序崩溃或导致单元格无法扩展: -
在实际站点上发布代码的人建议使用insertRowsAtIndexPath和deleteRowsAtIndexPath而不是reloadSection,但我不知道该怎么做。非常感谢您的帮助。
修改 - 还尝试了insertRowsAtIndexPath和deleteRowsAtIndexPath,但它似乎与tableView模型的设置和应用程序崩溃的方式冲突。
答案 0 :(得分:0)
在表中插入行可以帮助您获得更一致的表视图动画行为。
要在特定索引路径处插入行,您可以使用' insertRowsAtIndexPaths'方法。您将需要生成要插入的每个索引路径,然后将它们传递给数组中的方法。
ObjC:
NSArray* arr = your NSIndex Paths...;
[tableView insertRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationFade];
斯威夫特:
table.insertRowsAtIndexPaths([IndexPaths..], withRowAnimation: .Automatic)
答案 1 :(得分:0)
问题在于:reloadSections(..)
使tableView
方便地从模型中获取所有最新数据(对于指定的部分),代价是更“模糊”的动画。对于您要查找的行为,请使用insertRowsAtIndexPaths(..)
.Top
动画样式。如果您的数据模型存在问题,请先修复它(因为以后几乎肯定会打扰您)。