uitableview重置删除按钮

发布于 2024-11-08 04:25:10 字数 130 浏览 0 评论 0原文

在我的 uitableview 中,当用户设置编辑模式并尝试删除一行时,我会进行一些验证来检查该行是否可以删除。如果没有,我想将该行重置为以前的状态,即右侧没有删除按钮,但只有左侧的减号水平按钮。

我将使用哪种方法来执行上述操作?

In my uitableview, when the user sets the mode to edit and tries to delete a row, I do some validations to check if that row is ok to be deleted. If not, I would like to reset the row to the previous state, i.e without the delete button on the right, but just the minus horizontal button on the left.

Which method would I use to do the above?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绝對不後悔。 2024-11-15 04:25:10

试试这个代码,

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if(fails)
{
  [self.tableView reloadData];
  [super setEditing:YES animated:YES]; 
  [self.tableView setEditing:YES animated:YES];
}

Try this code,

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if(fails)
{
  [self.tableView reloadData];
  [super setEditing:YES animated:YES]; 
  [self.tableView setEditing:YES animated:YES];
}
风苍溪 2024-11-15 04:25:10

这将仅重置您需要重置的单元格。

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if(fails)
    {
        [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

This will reset just the cell you need to reset.

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if(fails)
    {
        [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}
深海蓝天 2024-11-15 04:25:10

KingofBliss 的答案将完成工作,但这有点更具体。此方法将以动画方式重置删除确认,并实质上“点击”删除编辑控件(重置确认的操作)。

UITableViewCell *cell = [self.detailsTableView cellForRowAtIndexPath:indexPath];
[cell.subviews enumerateObjectsUsingBlock:^(UIView *subview, NSUInteger index, BOOL *stop){

      if([subview isKindOfClass:NSClassFromString(@"UITableViewCellEditControl")])
      {
                UIControl *editControl = (UIControl *)subview;
                [editControl sendActionsForControlEvents:UIControlEventTouchUpInside];
      }

}];

KingofBliss's answer will get the job done, however this is a bit more specific. This approach will animate the resetting of the delete confirmation and essentially "taps" the delete edit control (an action that resets the confirmation).

UITableViewCell *cell = [self.detailsTableView cellForRowAtIndexPath:indexPath];
[cell.subviews enumerateObjectsUsingBlock:^(UIView *subview, NSUInteger index, BOOL *stop){

      if([subview isKindOfClass:NSClassFromString(@"UITableViewCellEditControl")])
      {
                UIControl *editControl = (UIControl *)subview;
                [editControl sendActionsForControlEvents:UIControlEventTouchUpInside];
      }

}];

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文