我有一个表格视图,其单元格包含一个UISwitch。对于其中一个,当开关打开时,我想在表格视图中显示另一行。我现在通过在tableView:numberOfRowsInSection:
和tableView:cellForRowAtIndexPath:
方法中设置条件并在switch的事件处理程序中调用reloadData
来实现此目的。这很好用。但是,我想要在表格单元格中进行动画处理,我无法弄清楚如何将其用于现有的表格视图插入/删除动画API。
我的代码:
- (IBAction)didToggleContractProperties:(id)sender {
UISwitch *toggle = (UISwitch *)sender;
switch (toggle.tag) {
case 100: // Packaging requested
self.contract.isPackingRequired = toggle.on;
[self.tableView reloadData];
break;
case 101: // On-campus pickup
self.contract.isOnCampus = toggle.on;
break;
case 102: // Insurance requested
self.contract.isInsuranceRequested = toggle.on;
break;
default:
break;
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
if (section == 0) {
if (self.contract.isPackingRequired)
return 4;
else
return 3;
}
else if (section == 1)
return 1;
else
return 1;
}
谢谢!
答案 0 :(得分:0)
添加动画表格单元格的方法是
[tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
其中tableView是您的表视图,indexPaths是一个包含新行的索引路径的可变数组。
答案 1 :(得分:0)
当您的开关启动时,只需在您的情况下添加带有附加项或条件的阵列,然后将此方法调用到您的部分。这将提供输入/输出效果,以显示越来越多的项目到tableview。
[mytv reloadSections: [NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
答案 2 :(得分:0)
这就是isPackRequired
切换的方法,例如:
- (IBAction)didToggleContractProperties:(id)sender {
UISwitch *toggle = (UISwitch *)sender;
switch (toggle.tag) {
case 100: // Packaging requested
if (self.contract.isPackingRequired != toggle.on)
{
self.contract.isPackingRequired = toggle.on;
if (toggle.on)
{
[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:0]]
withRowAnimation:UITableViewRowAnimationMiddle];
}
else
{
[self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:0]]
withRowAnimation:UITableViewRowAnimationMiddle];
}
}
break;
case 101: // On-campus pickup
...
default:
break;
}
}
显然,将row
和section
更改为insertRowsAtIndexPaths
和dleeteRowsAtIndexPaths
调用的适当值,以反映您希望插入/删除此行的位置。< / p>