我正在尝试创建一个UITableView
,以便当用户触摸我的普通UIViewTableCell
时,另一个UIViewTableCell
从右侧滑入,并具有新的单元格格式。此新UIViewTableCell
不会离开UITableView
。
UIViewTableCell
是两个不同的自定义单元格。
我想知道是否有办法将一个X type
的UITableViewCell
换成另一个具有动画滑动效果的Y type
的UITableViewCell
?
我看了下面的代码,但是我不知道我应该把Cell信息放在哪里。
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:myIndexPaths
withRowAnimation:UITableViewCellRowAnimationRight];
[tableView endUpdates];
[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:myNewIndexPaths
withRowAnimation:UITableViewCellRowAnimationLeft];
[tableView endUpdates];
任何关于如何做到这一点的指导都是高度赞赏的。
附言:我不是在寻找回购。我想知道这是如何做到的。
发布于 2013-07-22 15:18:53
基本上,表格视图单元格动画的工作方式是更新数据源(通常是为表格视图提供单元格时引用的数组),然后调用动画方法。插入单元格时,表视图调用numberOfRowsInSection
和cellForRowAtIndexPath
,因此它们返回正确的值是很重要的。
然而,在这种情况下,单元格的数量保持不变,因此您不能使用插入和删除。但是,您可以使用单元格重新加载。理论上,每次调用didSelectRowAtIndexPath
时,您都会添加到应该显示新单元格类型的点击索引路径列表中。或者,如果您一次只想要这些特殊单元格中的一个,则可以使用单个NSIndexPath
变量。然后你就会调用
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight]; //or left
然后,在cellForRowAtIndexPath
中,您将检查特定行是否需要不同类型的单元格,并在那里返回新类型。这样,呈现新单元格类型所需的代码就与新单元格的初始化隔离了。
希望这对你有用!
https://stackoverflow.com/questions/17790905
复制相似问题