2010-08-10 77 views
1

关于UITableView的Apple文档讨论了如何添加/编辑/删除行,但没有讨论添加/编辑/删除部分是细节,特别是关于UI。在添加/删除行的情况下,可以申请“加”和使用“删除”该行样式:编辑/删除部分的建议

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

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

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

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

当用户创建父记录(实体p​​)时,会自动创建一组固定的子记录(实体c)。在用户界面中,我在头部显示了父母(实体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; 
+0

我知道的方法的UITableView你我提到过,并且我明白删除某个部门会涉及的逻辑n或添加新的部分。而且,_swipeToDeleteSection是UITableView类的私有成员。它没有在API文档中公开,所以我猜测即使我弄清楚如何使用它,我的应用程序也不会被接受。 – Mustafa 2010-08-10 09:55:22

+0

啊,hrm。所以不要让你靠得更近......至少功能似乎存在。我猜苹果公司把它变成了私人的,因为他们决定不支持它或什么的。 – Kalle 2010-08-10 10:01:15

+0

等待,没关系,有一个tableView:deleteSections:withRowAnimation:方法,显然。但我想你的问题是让它支持滑动删除该部分。 – Kalle 2010-08-10 10:04:21