编辑/删除部分的建议

Posted

技术标签:

【中文标题】编辑/删除部分的建议【英文标题】:Recommendation for editing/deleting section 【发布时间】:2010-08-10 07:42:29 【问题描述】:

Apple 关于 UITableView 的文档讨论了如何添加/编辑/删除行,但没有讨论添加/编辑/删除部分的详细信息,特别是关于 UI。在添加/删除行的情况下,您可以使用以下命令在行上应用“添加”和“删除”样式:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;

但是,对于部分(我知道)没有这样的方法,可用于向用户显示可视控件以添加“+”或删除“-”部分。我可以使用用于新行的逻辑添加新部分,但是,我不确定如何删除整个部分(或允许用户编辑部分,例如部分标题)。我应该如何删除整个部分?

背景: 我正在开发基于核心数据的应用程序。我在实体之间有一对多的关系。

Entity r (root)   <-->> Entity p (parent),
Entity p (parent) <-->> Entity c (child)

当用户创建父记录(实体 p)时,会自动创建固定的子记录集(实体 c)。在 UI 中,我在标题中显示父级(实体 p)的基本信息,例如标题,以及关联的子记录(实体 c)作为部分行,以及页脚中的一些摘要。由于某些逻辑原因,我不能选择向下钻取方法(以避免添加/删除部分)。

【问题讨论】:

【参考方案1】:

编辑:

由于您可以为部分定义自定义视图,因此最好的办法是用您自己的 UIView 替换现有视图,当滑动(使用手势)时会删除该部分。您可能会模仿右侧的红色删除按钮,或者当用户在某个部分上滑动时,您可以只使用带有确认的 UIAlertView。

您可以使用 tableView:deleteSections:withRowAnimation: 删除该部分。

以下 SO 问题深入探讨该主题:UITableView: deleting sections with animation

曾经:

首先,

// UITableView.h:311...
- (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

其次,

UIKIT_EXTERN_CLASS @interface UITableView : UIScrollView <NSCoding> 
// ... 
NSInteger                   _swipeToDeleteSection;

【讨论】:

我知道您提到的 UITableView 方法,并且我了解删除部分或添加新部分所涉及的逻辑。而且,_swipeToDeleteSection 是 UITableView 类的私有成员。它没有在 API 文档中公开,所以我猜即使我知道如何使用它,我的应用程序也不会被接受。 啊,嗯。所以根本没有让你更接近......至少功能似乎存在。我猜 Apple 将其设为私有是因为他们决定不支持它或其他什么。 等等,没关系,显然有一个 tableView:deleteSections:withRowAnimation: 方法。但我猜你的问题是让它支持滑动删除部分。 替换了上面的答案。希望这次能有所帮助。 ;)

以上是关于编辑/删除部分的建议的主要内容,如果未能解决你的问题,请参考以下文章

为啥要避免动态 SQL 查询?有啥建议可以删除坏的部分并使用这些吗?

如何在 jqgrid 编辑/添加/删除选项上打开部分视图作为弹出窗口

在iOS7中处于编辑模式时更改uitableviewcell“删除”部分的颜色

使 UITextView 的一部分不可删除

UITableview 部分可编辑

删除 UITableView 中部分标题下的白线?