如何为 UITableView 添加自定义 EditingAccessoryView?
Posted
技术标签:
【中文标题】如何为 UITableView 添加自定义 EditingAccessoryView?【英文标题】:How to add Custom EditingAccessoryView for UITableView? 【发布时间】:2010-10-25 08:01:27 【问题描述】:我想在单元格中添加自定义 EditingAccessoryView,当用户滑动代替删除按钮时,我想显示我的自定义视图。
【问题讨论】:
当tableView处于编辑模式时,你能在单元格中显示指示器按钮吗? 【参考方案1】:似乎没有这样的功能。您所能做的就是使用以下函数为“删除”确认按钮提供自定义文本。
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
【讨论】:
谢谢。但我想添加两个按钮来代替一个删除按钮。不想更改该按钮的标题 这正是我想弄清楚的。抱歉,我不会投票,因为它没有解决所提出的问题。不过谢谢!【参考方案2】:来自 xib 的设计视图,如下例所示
现在在.h文件中制作uiview的IBOutlet
IBOutlet UIView *accessoryView;
将该 IBOutlet 连接到您的设计视图。
现在在 .m 文件中将该视图设置为表格单元格的editingAccessoryView
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
cell.editingAccessoryView = accessoryView;
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
return NO;
现在,当您滑动时,您的自定义视图将显示在删除按钮的位置
【讨论】:
我现在也在尝试这样做,EightyEight,并找到了这个解决方案——我认为这是正确的——在 ios 6 下不起作用(模拟器,在 XCode 5 beta 上) . 这根本不起作用。首先,为“canEditRowAtIndexPath”返回 NO 将完全阻止editingAccessoryView 出现。第二个问题是您需要为每个新单元格实例化附件视图的新实例。最后...我认为“dequeueReusableCellWithIdentifier”永远不会返回 nil,这当然意味着永远不会分配editingAccessoryView。你真的测试过这段代码吗?我真的不这么认为。以上是关于如何为 UITableView 添加自定义 EditingAccessoryView?的主要内容,如果未能解决你的问题,请参考以下文章
如何为具有与内置单元格相同的布局指标的“UITableView”提供自定义“UITableCell”?