以编程方式在 UITableViewCell 上显示删除按钮
Posted
技术标签:
【中文标题】以编程方式在 UITableViewCell 上显示删除按钮【英文标题】:Programatically show Delete button on UITableViewCell 【发布时间】:2016-12-26 09:04:37 【问题描述】:我想在UITableViewCell
上显示“删除”按钮,就像我们在单元格上从右向左滑动时看到的那样。我需要在点击单元格内的另一个按钮时显示此按钮。
到目前为止,我尝试了以下方法:
-
将单元格内容视图添加到滚动视图中,然后移动
点击表格内的按钮,单元格向左移动 80 点
看法。删除按钮也是滚动视图的一部分,直到屏幕外。
在 UITableView 单元的末尾添加一个 UIButton(最初隐藏在带有 X 开始屏幕右边缘的框架中)。然后换档
点击表格内的按钮,单元格向左移动 80 点
查看。
虽然 #1 没有显示按钮 #2 显示它很好。但是我无法点击该按钮,因为它从其超级视图中脱离了框架。
知道怎么做吗?
这就是我移动单元格内容的方式(此方法在我的自定义单元格类中。):
- (void)showCellDeleteButton
if (self.isDeleteMode)
return;
self.cellDeleteButton.hidden = NO;
self.isDeleteMode = YES;
[self disableDeleteItemButton];
[UIView animateWithDuration:0.3 animations:^
CGRect cellFrame = self.frame;
cellFrame.origin.x -= 80.0;
self.frame = cellFrame;
completion:nil];
这是我的删除按钮#2:
【问题讨论】:
在你的节目showCellDeleteButton
中,你打电话给[self disableDeleteItemButton];
。这是故意的吗?
是的,这是有意禁用右侧显示“删除”按钮的按钮,以便用户无法再次点击它。
哦,我还以为是红色删除按钮的功能呢!与其移动整个单元格,不如将所有子视图放在UIView
中,这将是单元格的完整内容视图,其后面隐藏着删除按钮。并移动 this UIView
而不是整个单元格?
【参考方案1】:
您也可以这样做。 1.在单元格内容视图中添加UIView,单元格内容视图宽度相等,并根据您的要求进行设计。 2. 然后将带有删除设计的按钮添加到单元格的内容视图而不是其他视图中。 3. 当你想显示你的删除按钮时,只需将你的视图向左移动 80 点,不要移动单元格和单元格的内容视图。
【讨论】:
当我这样做时,我想要移动内容的单元格点击内的按钮不可点击。点击事件转到didSelectRowAtIndexPath
中的表控制器。
为您的删除按钮添加点击事件,在点击功能中您可以完成工作。
:)。我已经在做。当按钮直接添加到单元格的内容视图时,它会触发操作,而不是当它添加到另一个视图时,该视图进一步作为子视图添加到单元格内容视图。
这是因为当您在单元格内容中移动子视图时,删除按钮会超出视图的触摸区域,他无法选择任何触摸事件。希望你能理解。
我明白了。如何让按钮在仍然是 UIView 的一部分而不是直接作为单元格内容视图的子视图时感知触摸?【参考方案2】:
方法一: 我认为您不能修改单元格的默认滑动手势。您只能启用或禁用手势。因此,这意味着您无法使用单元格滑动上显示的默认删除按钮玩太多游戏。您可以做的是在单击按钮时使 tableView 可编辑,然后您可以显示删除按钮。例如
- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
return UITableViewCellEditingStyleDelete;
-(void)deleteButtonTapped:(UIButton *)deleteButton
[self.tableView setEditing:YES animated:YES];
方法二: 设计您自己的自定义单元格,该单元格可以显示自定义按钮并且看起来像默认值。请参考以下链接。 https://www.raywenderlich.com/62435/make-swipeable-table-view-cell-actions-without-going-nuts-scroll-views
【讨论】:
以上是关于以编程方式在 UITableViewCell 上显示删除按钮的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式在 UITableViewCell 上显示删除按钮
无法在 UITableViewCell 中以编程方式创建的 UIButton 上设置图像
想知道如何以编程方式在 swift 3.0 中对 UITableViewCell 进行子类化?
以编程方式在 UITableViewCell 内创建 UIScrollView - ScrollView 不滚动
iOS 在 UITableViewCell 中以编程方式设置 UIImageView 约束在滚动 tableview 时变得混乱