使用动画过滤UITableViewCells-iPhone开发
这似乎很简单,但到目前为止,我还无法找到解决办法 基本上我有一个分段控件,有两个选项。第一个是默认值(并在加载时自动显示),选中此选项后,将显示表视图中的所有行。第二个是限制显示行的过滤器。这与iPhone手机应用程序的“最近”选项卡上使用的设置完全相同,该选项卡用于过滤“所有”和“未接”电话 目前,我从两个不同的阵列加载数据。问题是,当我交换数据时,没有动画表示行已被过滤。苹果已经在他们的手机应用程序中实现了这一点,但我看不到实现这一点的方法 当用户在这两种状态之间切换时,可能需要删除并重新添加每个单元格,或者可能将我希望隐藏的单元格高度设置为0会达到相同的效果?有人有制作这种手风琴式动画的经验吗使用动画过滤UITableViewCells-iPhone开发,iphone,animation,uitableview,filter,uisegmentedcontrol,Iphone,Animation,Uitableview,Filter,Uisegmentedcontrol,这似乎很简单,但到目前为止,我还无法找到解决办法 基本上我有一个分段控件,有两个选项。第一个是默认值(并在加载时自动显示),选中此选项后,将显示表视图中的所有行。第二个是限制显示行的过滤器。这与iPhone手机应用程序的“最近”选项卡上使用的设置完全相同,该选项卡用于过滤“所有”和“未接”电话 目前,我从两个不同的阵列加载数据。问题是,当我交换数据时,没有动画表示行已被过滤。苹果已经在他们的手机应用程序中实现了这一点,但我看不到实现这一点的方法 当用户在这两种状态之间切换时,可能需要删除并重新添
我已经寻找了一些线索,但是在运行一些有效的代码时遇到了问题。以前有人实施过吗?如果是这样,您是如何使其工作的?您可以通过调用
deleteRowsAtIndexPaths:withRowAnimation:
和insertRowsAtIndexPaths:withRowAnimation:
在您的表视图上使用UITableViewRowAnimationFade
动画来实现类似的效果。您查看了吗
基本思想是调用reloadSections:withRowAnimation:并在UITableViewDataSource实现中打开分段控件的selectedSegmentIndex
假设您的数据是平面的(只有一个部分),它将如下所示:
- (IBAction)segmentSwitch:(id)sender
{
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
switch (self.segmentedControl.selectedSegmentIndex)
{
default:
case 0:
return [self.allRows count];
case 1:
return [self.onlySomeRows count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
id data;
switch (self.segmentedControl.selectedSegmentIndex)
{
default:
case 0:
data = [self.allRows objectAtIndex:[indexPath row]];
break;
case 1:
data = [self.onlySomeRows objectAtIndex:[indexPath row]];
break;
}
//TODO: use data to populate and return a UITableViewCell...
}