在UITableview编辑模式下,左删除图标不显示

时间:2011-01-12 08:09:19

标签: iphone uitableview swipe

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

alt text

代码与CoreDataRecipes的区别:

  1. 我有自定义UITabelview单元格 一个nib文件而不是代码。
  2. 我的Tableview是我班级视图中的Outlet。所以我的课 RecipeListTableViewController是一个 UIViewController与Tableview委托而不是UITableViewController
  3. 我尝试了什么:

    • Tableview工作正常。
    • 没有链接或委托问题
    • 我检查了桌子是否真的 进入编辑模式。确实如此。您 可以看到因为“添加”按钮 被禁用。
    • 我检查了编辑风格是否正常。它应该是默认值,但要确保我添加:

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

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

    • 当我滑动单元格时,会出现右删除按钮并按原样运行
    • 我尝试使用layoutSubviews构建自己的行为。进入编辑模式时没有任何变化。但是当我滑动时,现在我在一行中看到了我的子视图:

    alt text

    任何想法?一定很简单。

4 个答案:

答案 0 :(得分:3)

确保

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

    return YES;
}

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

答案 1 :(得分:1)

我认为你还没有添加这条线  单击“编辑”按钮

tableView.editing=YES

尝试设置!

答案 2 :(得分:1)

由于你的是UIViewController,tableview没有得到setEditing调用。只需添加:

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

答案 3 :(得分:0)

确保已设置outlet / delegate / datasource 然后这些:

-(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;
}