我目前正在尝试使用分组的UITableView实现可编辑的详细信息视图。我希望它看起来像Contacts应用程序:
我不确定实现这一目标的最佳方法是什么。首先,我尝试将标头添加为UILabel tableHeaderView(效果很好),但后来我无法将其切换为UITableViewCell。进入编辑模式时,可能会删除标题并添加新的部分。
目前我正在尝试始终使用UITableViewCell并使其在查看模式下透明,并在编辑模式下将其切换为默认值。但是,我无法使UITabel的UITabel(在UITableViewCellStyleDefault中)透明(虽然我确实设法使UITableViewCell透明,但不是内部的textLabel)。
实现此行为的最佳方法是什么?
答案 0 :(得分:1)
我也是这样做的(虽然iOS4中的联系人应用程序的更改没有实际意义!)我的解决方案使用两个不同的标题视图,并根据isEditing
在它们之间切换:
- (UIView *)infoHeaderAnimated:(BOOL)animated {
UIView *header = [[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 90.0)] autorelease];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(98.0, 41.0, 221.0, 21.0)];
label.font = [UIFont boldSystemFontOfSize:17.0];
label.backgroundColor = [UIColor clearColor];
label.text = baseEntity.labelText;
[header addSubview:label];
[label release];
return header;
}
- (UIView *)editingHeaderAnimated:(BOOL)animated {
UIView *header = [[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 90.0)] autorelease];
UITableView *tv = [[UITableView alloc] initWithFrame:CGRectMake(78.0, 10.0, 240.0, 90.0) style:UITableViewStyleGrouped];
tv.backgroundColor = [UIColor clearColor];
tv.dataSource = self;
tv.delegate = self;
tv.rowHeight = 62.0; //@@@ height of cell and frame depend on elements
tv.tag = kEditingHeaderTag;
editingHeaderTableView = [tv retain];
[header addSubview:tv];
[tv release];
return header;
}
答案 1 :(得分:0)
你要做的是非常标准的,考虑在UITableViewDatasource中实现这些协议,特别是titleForHeaderInSection& commitEditingStyle:
Configuring a Table View
– tableView:cellForRowAtIndexPath: required method
– numberOfSectionsInTableView:
– tableView:numberOfRowsInSection: required method
– sectionIndexTitlesForTableView:
– tableView:sectionForSectionIndexTitle:atIndex:
– tableView:titleForHeaderInSection:
– tableView:titleForFooterInSection:
Inserting or Deleting Table Rows
– tableView:commitEditingStyle:forRowAtIndexPath:
– tableView:canEditRowAtIndexPath:
请记住在Interface Builder中选择TableView的类型而不是Plain。