如何为 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”?

如何为uitableview自定义多选编辑模式

如何为 UITableView 设置分隔符样式 [重复]

如何为自定义 TableViewCell 和 CollectionView Cell 使用一个 UIView。?

如何为我的静态 UITableView 添加页脚?

如何为 UITableView 索引事件添加操作 - 对于每个字母