2014-01-14 42 views
1

我正在处理新的应用程序,我想要自定义表格视图。我需要有2个标签的单元格1个复选框和2个按钮。我遇到的问题是只有在用户按下顶部的编辑按钮时才需要显示2个按钮。我完成了所有这些工作,但是对于可重用单元或类似的问题我有一些问题。iOS开发动画表格视图自定义单元格内容

我做了自定义的单元类,所以我可以给它分配数据。

第一状态是:在IMG

然后当在上面用户按下编辑按钮,我需要everyting动画,来到正确的地方第一个国家。 我想要文本动画到右边为按钮腾出空间,删除按钮需要从左侧来动画,并且编辑来自右侧的动画。

这就是我想要得到的动画完成后:在IMG

我做这一切工作的第二种状态,但现在我有问题,首先2个细胞后,我向下滚动,这会是在屏幕上不通过我的代码:(影响

这是我所得到的:在IMG

第三国,我将在这里发布我的项目的代码,如果some1能帮助我做这事,我会更高兴,然后我点我。正确的方法来做到这一点

Co德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]; 

细胞INIT我使用:

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开发,所以我不能自己弄清楚这个:(所以请帮助:)谢谢

回答

0

在你的cellForRow功能在你的tableview委托你需要处理你的标签的位置。所以每次你申请一个新的(或重用的)单元时,你都需要检查你是否处于编辑模式,然后相应地设置标签框。

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

+0

我做的是: 如果(firstInit && doNotAnimate!) { 如果(editSelected) { 动画放在这里。 } } 按钮显示在正确的地方是他们被放置在xib文件中。如果你看看我的项目,你有完整的代码,你可以看到我正在尽我所能去移动标签与 [cell.infoView setFrame:CGRectMake(70,CGRectGetMinY(cell.infoView.frame),CGRectGetWidth(cell.infoView .frame),CGRectGetHeight(cell.infoView.frame))];但它没有影响它:( – lazar89nis

+0

继续...你如何设置cell.infoView.frame?或者你呢? – Putz1103

+0

当我尝试更改cellForRowAtIndexPath方法中的单元格外观时,会出现一些问题,它会显示所有数据因为他们需要我但它不会让我改变标签的位置和类似的东西我不知道如果我做错了什么,但这是一个奇怪的问题:( – lazar89nis

0

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

+0

我试过你的解决方案,但我仍然得到错误有些情况下,所以我做了有点愚蠢但工作方式:)你可以看到我的帖子我做了什么:)仍然感谢你的时间和有关汽车布局的信息 – lazar89nis

+0

你得到什么样的错误?似乎为我工作得很好。 – sooper

+0

如果您尝试10次或20次向上移动编辑关闭某些单元格编辑。就像你所有的单元格都带有编辑和删除按钮,而其中一个没有它们。它会随机发生。我无法想出它告诉你它发生了什么样的组合:)如果你愿意,我可以让你拍照。 – lazar89nis

0

SOLUTION:

我做了这方面的一些更多的工作。尝试过的解决方案,你提供了我,但仍然有时,它被窃听,所以我带着我自己的。我发现问题在于你不能在第一次初始化时在单元格中移动视图,但是你可以隐藏它们。所以我决定尝试在启用启用时在需要的地方制作相同的信息视图。当启用关闭它隐藏,并启用时它显示出来。这是解决了我的问题:)我知道它不是最聪明的做事方式,但我设法做我想做的事情,而不是搞乱应用程序的表演。

这是一个固定的bug的项目。如果任何1想要可以使用它:)

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

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

相关问题