背景
我真的很想弄清楚如何处理UITableView的编辑模式,并在编辑开始时隐藏一些行。
我正在使用分组表视图样式,每个部分有多个部分和多行。每个部分的最后一行标题为“添加新...”。
这个想法是允许最终用户点击每个部分中的“添加新...”行,然后转到新屏幕,在那里他们填写一些字段,然后返回到具有新行的该表视图在相关部分中添加。因此,最后一行与数据源并不真正相关,而且更像是UX。
我设法将Add行添加到每个部分的末尾。
问题
我有一个调用tableView setEditing:animated:
的按钮,这会对所有行进行插入,并在每行的左侧添加一个删除图标。
我不想做的是允许用户删除“添加新...”行。所以我的想法就是使用tableView:canEditRowAtIndexPath:
删除那些“添加新...”行的删除功能。
这有效,但看起来很废话,因为除了“添加新...”行之外,所有行都是插入的。
所以我目前的想法是,当编辑模式开始时,只需从表格视图中删除“添加”行,然后在编辑模式完成后再将它们添加回来。
我尝试通过在用户点击编辑按钮时遍历所有行来执行此操作,但似乎只能使用cellForRowAtIndexPath:
获取当前可见的行。
所以我可以删除那些可见的但是一旦用户向下滚动桌面视图,添加按钮仍然存在于那些不可见的部分(在编辑初始化时)。
帮助!
当用户编辑表格然后将其添加回来之后,是否有人知道如何隐藏每个部分的“添加”行?
我正在寻找联系人应用在用户编辑联系人时使用的相同功能。
答案 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