2012-05-20 48 views
0

就像iPhone“设置”应用程序中的“Wi-Fi”,我有一个表格视图,第一部分中的开关切换是否显示以下部分。删除多个表格视图部分与每个部分的个人动画

更新tableView: numberOfRowsInSection:后,我通过使用insertSections: withRowAnimation:deleteSections: withRowAnimation:成功了它。但是,与“设置”中的“Wi-Fi”不同,所有已删除的部分在消失之前一起折叠,

我想实现在“无线网络连接”,在自己内部分崩单独当他们从视图中删除同样的效果。

建议如何做到这一点?

+1

你不只是在谈论改变行动画?也许像'UITableViewRowAnimationTop'? –

+0

嗨大卫,我试过所有的动画风格。他们都将部分合并在一起,而不是单独部分。此外,'UITableViewRowAnimationFade'是唯一一个在折叠后淡出这些部分的人。 – James

+0

如果批处理动画([myTableView beginUpdates];和[myTableView removeUpdates];)之间会发生什么情况?使用合适的行动画删除所有行,并使用... RowAnimationFade? –

回答

0

我能够做到这一点调用deleteSections每节:

static int nos = 4; 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return nos; 
} 

-(IBAction)onFadeTableButton:(id)sender 
{ 
    NSMutableIndexSet *sectionsToDelete = [NSMutableIndexSet indexSet]; 
    [sectionsToDelete addIndex:3]; 

    nos = 3; 
    [self.tableView deleteSections:sectionsToDelete 
        withRowAnimation:UITableViewRowAnimationTop]; 

    [sectionsToDelete addIndex:2]; 
    [sectionsToDelete removeIndex:3]; 
    nos = 2; 
    [self.tableView deleteSections:sectionsToDelete 
        withRowAnimation:UITableViewRowAnimationMiddle]; 


    [sectionsToDelete addIndex:1]; 
    [sectionsToDelete removeIndex:2]; 
    nos = 1; 
    [self.tableView deleteSections:sectionsToDelete 
        withRowAnimation:UITableViewRowAnimationMiddle]; 

    [sectionsToDelete addIndex:0]; 
    [sectionsToDelete removeIndex:1]; 
    nos = 0; 
    [self.tableView deleteSections:sectionsToDelete 
        withRowAnimation:UITableViewRowAnimationMiddle]; 

} 

的代码是丑陋的,因为我很快就使用现有项目(含4节表视图),但这个想法必须明确。请勿按原样使用它,请使它美观。

+0

是的,我想我可能最终不得不在多个步骤中更新表视图数据源,并删除彼此成功的部分。如果有更简单的方法来获得效果,我仍然很好奇,所以我现在就把问题保持开放。感谢您的回复,如果没有更好的解决方案,我会接受您的回答。 – James

+0

@詹姆斯没有问题,一个音符 - 与该代码的部分同时删除(好吧,必须有一个滞后,但在视觉上他们 - 下一个动画不会等到前一个完成),如在Wi - Fi应用程序。对于需要隐藏/显示某些东西的情况,我更喜欢使用额外的标志数据源而不是重新分配具有数据的数据源 - 这为我节省了大量时间,但这取决于您。 –

+0

你能详细说明一下你的意思吗?再次感谢。 – James

相关问题