3

我有一个应用程序,我在其中保持我tableview的可编辑以拖放单元格。但是当我这样做时,设计cell正在发生变化,使得每个元素都居中,并且有一个三行的右显示按钮。我需要通过保持单元格的相同设计来做到这一点。没有任何披露按钮并保持单元格布局与不可编辑表格视图的情况相同。我在 didload中实现了这样的编辑[tableview setEditing:YES animated:YES];并实现了代表作为

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

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

- (void) tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {

    NSInteger sourceRow = sourceIndexPath.row;
    NSInteger destRow = destinationIndexPath.row;
    id object = [array objectAtIndex:sourceRow];

    [array removeObjectAtIndex:sourceRow];
    [array insertObject:object atIndex:destRow];

}

任何人都可以帮助我实现这一目标吗?

4

2 回答 2

2

试试这个:

将此方法添加到您的 tableView 委托以防止缩进:

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath{
  return  NO;
}

然后在您的 UITableViewCell 子类中将所有重新排序视图的 alpha 设置为 0:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated{
  [super setEditing:editing animated:animated];
  if (editing) {
    for (UIView * view in self.subviews) {
      NSLog(@"%@",view);
      if ([NSStringFromClass([view class]) rangeOfString: @"Reorder"].location != NSNotFound) {
        for (UIView *sv in view.subviews) {
          sv.alpha = 0.0f;
        }
      }
    }
  }
}

请注意,这是一个 hack,我不确定苹果是否会拒绝该应用程序。

于 2013-05-01T10:13:00.993 回答
0

您应该向 tableViewDatasource 的此方法返回 NO:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
于 2013-05-01T08:54:02.533 回答