编辑时隐藏一些UITableViewCells?

时间:2011-12-01 12:22:54

标签: iphone ios ios4 uitableview

背景

我真的很想弄清楚如何处理UITableView的编辑模式,并在编辑开始时隐藏一些行。

我正在使用分组表视图样式,每个部分有多个部分和多行。每个部分的最后一行标题为“添加新...”。

这个想法是允许最终用户点击每个部分中的“添加新...”行,然后转到新屏幕,在那里他们填写一些字段,然后返回到具有新行的该表视图在相关部分中添加。因此,最后一行与数据源并不真正相关,而且更像是UX。

我设法将Add行添加到每个部分的末尾。

问题

我有一个调用tableView setEditing:animated:的按钮,这会对所有行进行插入,并在每行的左侧添加一个删除图标。

我不想做的是允许用户删除“添加新...”行。所以我的想法就是使用tableView:canEditRowAtIndexPath:删除那些“添加新...”行的删除功能。

这有效,但看起来很废话,因为除了“添加新...”行之外,所有行都是插入的。

enter image description here

所以我目前的想法是,当编辑模式开始时,只需从表格视图中删除“添加”行,然后在编辑模式完成后再将它们添加回来。

我尝试通过在用户点击编辑按钮时遍历所有行来执行此操作,但似乎只能使用cellForRowAtIndexPath:获取当前可见的行。

所以我可以删除那些可见的但是一旦用户向下滚动桌面视图,添加按钮仍然存在于那些不可见的部分(在编辑初始化时)。

帮助!

当用户编辑表格然后将其添加回来之后,是否有人知道如何隐藏每个部分的“添加”行?

我正在寻找联系人应用在用户编辑联系人时使用的相同功能。

4 个答案:

答案 0 :(得分:0)

实际上你已经关闭了答案,只需使用方法cellForRowAtIndexPath来拾取你想要隐藏的单元格,并将其隐藏属性设置为YES。你做到了!


哦,很抱歉,我没有注意到你正在使用群组样式,所以我的建议是你可以尝试将添加按钮分开到其他按钮,例如将它包含在一个部分中。

答案 1 :(得分:0)

您可以在“添加行”行中显示绿色(+)按钮,使其与可删除行对齐。

只需覆盖表格视图委托中的-tableView:editingStyleForRowAtIndexPath:,然后返回该行的UITableViewCellEditingStyleInsert

答案 2 :(得分:0)

如何从实际数据源中删除添加行,只需调用[tableView reloadData],然后在编辑模式更改时,将它们添加回数据源并重新加载数据。

答案 3 :(得分:0)

从canEditCellAtIndexPath为该部分中的每个单元格返回YES,然后覆盖 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {}并返回UITableViewCellEditingStyleNone为“add line”行,否则返回UITableViewCellEditingStyleDelete