我需要UITableView的一些帮助。我正在寻找创建编辑表功能的最佳解决方案。我有UITableViewController数据和两种模式:
当用户点击编辑按钮时,难以对行进行动画处理。
我想要在iPhone上的地址簿应用程序中使用相同的动画。
答案 0 :(得分:0)
简单的这样的东西。
//original position and maybe hidden
someView.frame = CGRect(0,0,0,0);
someView.alpha = 0.0f;
[someView setHidden:YES];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
//what you want it comes out finally, changed position and visible
[someView setHidden:NO];
someView.frame = CGRect(100.0f,100.0f,0,0);
someView.alpha = 1.0f;
[UIView commitAnimations];
答案 1 :(得分:0)
使用
[tableView setEditing: YES animated: YES];
在编辑模式下制作 UItableView 。当您在行上滑动时,它会让您显示并隐藏按钮。如果您想要动画,请告诉我。
答案 2 :(得分:0)
我有解决方案! Help from this article
所以你需要添加这样的东西(感谢Sandy)
- (void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
NSArray *paths = [NSArray arrayWithObject:
[NSIndexPath indexPathForRow:1 inSection:0]];
if (editing) {
[[self tableView] insertRowsAtIndexPaths:paths
withRowAnimation:UITableViewRowAnimationTop];
}else {
[[self tableView] deleteRowsAtIndexPaths:paths
withRowAnimation:UITableViewRowAnimationTop];
}
}
之后 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
将被校对,您可以编辑单元格列表及其外观。
答案 3 :(得分:0)
在下面的情况下,我有2个部分,第一部分包含一系列设置,第一行是默认设置,总是在那里,不能重新排序,第二行只包含一行,如'添加... ',编辑仅用于重新排序和删除所以在编辑模式下我删除了第一个设置,并删除了第二个部分,如果你在tableview上的beginUpdates / endUpdates中填充所有插入/删除,它会平滑动画。所以对你来说恰恰相反,在编辑
时添加更多行/部分在普通模式下,我有:
Countries (<-- 1st section)
- World
- Argentina
- USA
(<-- 2nd section)
- Add Countries...
在编辑模式中,我有:
Countries (<-- 1st section)
- Argentina = (can be removed/reordered)
- USA = (can be removed/reordered)
代码如下:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
NSArray *paths = [NSArray arrayWithObjects:
[NSIndexPath indexPathForRow:0 inSection:0],
nil];
[self.tableView beginUpdates]; // Club all updates together
if (editing)
{
if( [[CCPollSettings countryCodes] count] < 2) // No country setting
// Remove complete section
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
else // Remove first default row
[self.tableView deleteRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationFade];
// Remove 'Add...' Section
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
// .... Do more stuff after
} else {
if( [[CCPollSettings countryCodes] count] < 2) // No country setting yet
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
else // add back default row
[self.tableView insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationFade];
// Add back 'Add...' Section
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
}
[self.tableView endUpdates]; // Club all updates together
}