UITableview 编辑模式下左侧删除图标不出现

发布于 2024-10-11 17:37:48 字数 1035 浏览 2 评论 0原文

我有一个基于核心数据/ uitableview 的应用程序。实际上,到目前为止 80% 的代码与 Apple 示例应用程序 CoreDataRecipes 相同。我的问题是,当我进入编辑模式(通过按下编辑按钮)时,行的左侧没有“删除徽章”。保险杠。

alt text

代码与 CoreDataRecipes 的差异:

  1. 我有自定义 UITabelview 单元格 nib 文件而不仅仅是代码。
  2. 我的 Tableview 是我的类视图中的一个 Outlet。所以我的班级 RecipeListTableViewController 是一个 UIViewController 与 Tableview 委托而不是 UITableViewController

我尝试过的:

  • Tableview 工作正常。 存在链接或委托问题
  • 我检查过表是否确实 进入编辑模式。确实如此。你 可以看到,因为“添加”按钮 已禁用。
  • 我检查了编辑风格是否正常。它应该是默认的,但为了确保我添加了:

    (UITableViewCellEditingStyle)tableView:(UITableView*)tableVieweditingStyleForRowAtIndexPath(NSIndexPath*)indexPath {return UITableViewCellEditingStyleDelete;}

  • 我检查了删除图标是否不在我的单元视图后面。没有。我现在认为向右移动的单元格行为是由 iOS 处理的。

  • 当我滑动单元格时,会出现正确的删除按钮并正常工作,
  • 我应该尝试使用layoutSubviews构建自己的行为。进入编辑模式后没有任何变化。但是当我滑动时,现在我看到我的子视图排成一行:

alt text

有人有什么想法吗?这一定是简单的事情。

I have a core data/ uitableview based app. Actually 80% of the code so far is equal to the Apple Sample app CoreDataRecipes. My problem is that when I enter the edit mode (by pushing the edit button), there are no "delete badges" on the left side of the rows. Bumper.

alt text

The differences in code with CoreDataRecipes:

  1. I have custom UITabelview cell with
    a nib file instead of code only.
  2. My Tableview is an Outlet inside my class view. So my class
    RecipeListTableViewController is an
    UIViewController with Tableview delegates instead of a UITableViewController

What I tried:

  • The Tableview works fine. There are no linking or delegate issues
  • I checked if the table actually
    enters the edit mode. It does. You
    can see that because the "Add" button
    is disabled.
  • I checked if the editingstyle is ok. It should be by default but to make sure I added:

    (UITableViewCellEditingStyle)tableView:(UITableView*)tableVieweditingStyleForRowAtIndexPath(NSIndexPath*)indexPath {return UITableViewCellEditingStyleDelete;}

  • I checked if the delete icons where not behind my cellview. There are not. I now think that the cell behaviour of moving to the right is handled by iOS.

  • When I swipe the cell, the right delete button appears and works as it should
  • I tried to build the behaviour my self with a layoutSubviews. Nothing changed when entering the edit mode. But when I swipe, now I see my subview in one row:

alt text

Anyone any ideas? It must be something simple.

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

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

发布评论

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

评论(4

逆光飞翔i 2024-10-18 17:37:48

确保

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{

    return YES;
}

如果未设置为返回 YES,则不会启用徽章。默认设置为返回NO

Make sure that

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{

    return YES;
}

If this is not set to return YES then the badges will not be enabled. The default is set to return NO

太阳哥哥 2024-10-18 17:37:48

我认为你还没有添加该行
单击“编辑”按钮时 tableView.editing=YES

尝试设置它!

I think you have not added the line
tableView.editing=YES on clicking the Edit button

Try by setting it!

旧人 2024-10-18 17:37:48

由于您的是 UIViewController,因此 tableview 不会收到 setEditing 调用。只需添加:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.tv setEditing:editing animated:YES];
}

Since yours is a UIViewController, the tableview doesnt get the setEditing call. Just add:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.tv setEditing:editing animated:YES];
}
泛滥成性 2024-10-18 17:37:48

确保您已设置出口/委托/数据源
然后是这些:

-(void)editButtonTapped
{
    [self.tableView setEditing:YES animated:YES];
}



-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete;
}

Make sure you have setup the outlet/ delegate/ datasource
then these:

-(void)editButtonTapped
{
    [self.tableView setEditing:YES animated:YES];
}



-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文