1

我需要一些关于 UITableView 的帮助。我正在寻找创建编辑表功能的最佳解决方案。我有带有数据和两种模式的 UITableViewController:

  • 编辑模式:所有字段(如名字、姓氏、电话、网页等...)
  • 查看模式:仅显示归档的行。

困难的是当用户单击编辑按钮时为行设置动画。

我想要我们在 iPhone 上的地址簿应用程序中拥有的相同动画。

4

4 回答 4

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];
于 2012-09-07T10:04:52.130 回答
0

采用

[tableView setEditing: YES animated: YES];

使UItableView处于编辑模式。当您在行上滑动时,它会显示和隐藏按钮。如果您的动画是什么,请告诉我。

于 2012-09-07T10:35:54.960 回答
0

我有解决办法! 这篇文章的帮助

所以你需要添加这样的东西(感谢桑迪)

- (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

将被收集,您可以编辑单元格列表及其外观。

于 2012-09-10T10:49:18.890 回答
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
}
于 2013-10-11T13:12:06.210 回答