iOS开发动画表视图自定义单元格内容

时间:2014-01-14 19:16:09

标签: ios iphone ipad tableview

我正在开发新的应用程序,我希望有自定义表视图。我需要有2个标签的单元格1复选框和2个按钮。我的问题是,只有当用户按下顶部的编辑按钮时才需要显示2个按钮。我把所有这些都用到了,但我对可重复使用的细胞有类似的问题。

我制作了自定义单元格类,因此我可以为其分配数据。

第一个状态是:img上的第一个状态

然后,当用户按下顶部的编辑按钮时,我需要每个动画并来到正确的位置。 我希望文本动画向右为按钮创建空间,删除按钮需要从左侧动画并编辑按钮从右侧进行动画制作。

这是动画完成后我想要的:img上的第二个状态

我使所有这一切工作但现在我有问题,我向下滚动后屏幕上的前2个单元格不受我的代码影响:(

这就是我得到的:img上的第三个状态

我将在这里发布我的项目代码,如果some1可以帮助我,我会更激动。我指出了正确的方法来做到这一点。

代码downoald:https://www.mediafire.com/?g1g6d7h33mpkyt7

我将在这里发布一些我认为对我的问题至关重要的代码:

我使用的动画:

[cell.infoView setFrame:CGRectMake(20, CGRectGetMinY(cell.infoView.frame), CGRectGetWidth(cell.infoView.frame), CGRectGetHeight(cell.infoView.frame))];
        [UIView animateWithDuration:0.4
                              delay:0
                            options:UIViewAnimationOptionCurveEaseIn
                         animations:^{
                             [cell.infoView setFrame:CGRectMake(70, CGRectGetMinY(cell.infoView.frame), CGRectGetWidth(cell.infoView.frame), CGRectGetHeight(cell.infoView.frame))];
                         }
                         completion:nil];

对于我使用的单元格初始化:

CICustomCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];
if(cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"HCICustomCell" owner:nil options:nil];
    cell = [nib objectAtIndex:0];
}

cell.itemName = [dwarves objectAtIndex:indexPath.row];

cell.quantity = 25.99;

表初始化我使用:

UITableView *tableView = (id)[self.view viewWithTag:1];

tableView.rowHeight = 60;

UINib *nib = [UINib nibWithNibName:@"HCICustomCell"
                            bundle:nil];


[tableView registerNib:nib forCellReuseIdentifier:CellTableIdentifier];

img:http://i270.photobucket.com/albums/jj109/lazardj/scsimg.jpg~original

编辑:

我现在也尝试了一些东西。如果我开始我的活动,然后向下滚动一点,所以我得到一些新的细胞,我没有这个问题。因此,它必须是创建细胞或细胞的可重用性或类似的东西。我是ios开发的新手,所以我不能自己解决这个问题:(所以请帮助:)谢谢

3 个答案:

答案 0 :(得分:0)

在tableview委托的cellForRow功能中,您需要处理标签的位置。因此,每次请求新的(或重用的)单元格时,都需要检查是否处于编辑模式,然后相应地设置标签框架。

看起来你已经为按钮做了这个,因为它们显示在正确的位置,但标签正在它们的初始位置重新使用(当它们被tableview释放时)。

答案 1 :(得分:0)

我已经看过你的项目,问题似乎源于使用AutoLayout。自动约束似乎会干扰您的视图布局。如果您转到HCICustomCell.xib文件并单击文件检查器标签,则会看到“使用Autolayout ”的复选框。取消选中此项,然后在“大小检查器”选项卡中为每个视图手动设置自动调整大小约束。我上传了项目的修订版here

答案 2 :(得分:0)

解决方案:

我在这方面做了更多的工作。尝试过你提供给我的解决方案,但有时候它会被窃听,所以我来自我自己的解决方案。我发现问题是你不能在第一个init上移动视图但你可以显示隐藏它们。所以我决定尝试在启用启用时在需要的位置创建相同的信息视图。当启用关闭时,隐藏启用,启用启用时显示。这就解决了我的问题:)我知道它并不是最聪明的做事方式,但我设法做了我想做的事,而且没有弄乱应用程序的性能。

这是修复错误的项目。如果any1想要可以使用它:)

感谢您的所有时间和建议。

项目:https://www.mediafire.com/?uhatbh8c20xu49v