Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS开发动画表视图自定义单元格内容_Ios_Iphone_Ipad_Tableview - Fatal编程技术网

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

iOS开发动画表视图自定义单元格内容,ios,iphone,ipad,tableview,Ios,Iphone,Ipad,Tableview,我正在开发新的应用程序,我希望有自定义的表视图。我需要有2个标签,1个复选框和2个按钮的单元格。我的问题是,只有当用户按下顶部的编辑按钮时,才需要显示2个按钮。我做这一切都是为了工作,但我对可重复使用的细胞或类似的东西有一些问题 我创建了自定义单元类,以便可以为其分配数据 第一个状态是:img上的第一个状态 然后,当用户按下顶部的编辑按钮,我需要每一个动画,并来到正确的地方。 我想文本动画的权利,使空间的按钮,删除按钮需要来动画从左侧和编辑按钮来动画从右侧 这就是我想在动画完成后得到的:img上

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

我创建了自定义单元类,以便可以为其分配数据

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

然后,当用户按下顶部的编辑按钮,我需要每一个动画,并来到正确的地方。 我想文本动画的权利,使空间的按钮,删除按钮需要来动画从左侧和编辑按钮来动画从右侧

这就是我想在动画完成后得到的:img上的第二个状态

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

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

我会在这里发布我的项目代码,如果有人能帮我,我会非常激动。我会告诉我正确的方法

代码downoald:

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

对于动画,我使用:

[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];
对于cell 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];
对于表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:

编辑:


我现在也尝试了一些东西。如果我开始我的活动,然后向下滚动一点,这样我就可以得到一些新的单元格,我没有这个问题。所以这一定是与创建单元格或单元格的可重用性之类的问题有关。我是ios开发新手,所以我自己无法解决这个问题:(因此请帮助:)感谢您在tableview代理的
cellForRow
功能中处理标签的位置。因此,每次请求新(或重复使用)单元格时,您都需要检查是否处于编辑模式,然后相应地设置标签框


看起来您已经在对按钮执行此操作,因为它们显示在正确的位置,但是标签在其初始位置被重复使用(当它们被tableview释放时)。取消选中此选项,然后在“大小检查器”选项卡中为每个视图手动设置自动调整大小约束。我已上载了项目的修订版本。

解决方案:

我在这方面做了更多的工作。尝试了您提供的解决方案,但仍有一些时候它被窃听,所以我带上了我自己的解决方案。我发现问题是您无法在第一次初始化时在单元格中移动视图,但您可以显示隐藏它们。因此我决定尝试在启用时在需要的位置创建相同的信息视图。启用时e关闭了隐藏状态,当启用时它会显示。这就是解决我问题的方法:)我知道这不是最聪明的方法,但我成功地做到了我想要的,并且不会影响应用程序的性能

这是一个有固定错误的项目。如果有任何需要,可以使用它:)

谢谢你的时间和建议


项目:

我正在这样做:如果(!firstInit&&!doNotAnimate){if(editSelected){animations在这里。}}按钮显示在正确的位置,就是它们被放置在xib文件中。如果你看一下我的项目,你会发现我有完整的代码,你可以看到我正在尽我所能用[cell.infoView setFrame:CGRectMake(70,CGRectGetMinY(cell.infoView.frame),CGRectGetWidth(cell.infoView.frame),CGRectGetHeight(cell.infoView.frame));但这并不影响它:(继续…您是如何设置cell.infoView.frame的?还是这样?我认为在cellForRowAtIndexPath方法中尝试更改单元格外观时出现了一些问题。它会根据需要向我显示所有数据,但不允许我更改标签的位置等。我不确定我是否做错了什么,但这是一些错误的做法。)问题:(我尝试了你的解决方案,但在某些情况下我仍然会遇到错误。所以我用了一种愚蠢但有效的方式:)你可以看到我的帖子我做了什么:)仍然感谢您的时间和关于自动布局的信息您得到了什么样的错误?似乎对我来说很好。如果您尝试10或20次上移,请打开编辑打开编辑关闭一些单元格。就像您的所有单元格都显示编辑和删除按钮,而1没有打开它们。这是随机发生的。我无法计算我不想告诉你它是什么组合发生的:)如果你愿意,我可以让你和我的窃听器合影。