如何在仍然使用重新排序时摆脱reorderControl?

时间:2011-08-01 10:33:47

标签: iphone ios ios4 uitableview

不久前I asked about how to move reorderControl视图靠近我的自定义单元格的中心,所以这个reorderControl打破了自定义设计。由于我无法移动此视图并且我的单元格始终处于编辑模式 - 我只是在我的单元格背景的正确位置绘制此reorderControl。但现在我有两个reorderControls)一个来自我在背景中的正确位置和一个来自iOS。如果我将- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath的返回值设置为NO,则iOS reorderControl会消失,但我无法重新排序行。

如何从屏幕上删除iOS reorderControl并仍然可以重新排序我的自定义UITableViewCell?

ps cell.showsReorderControl = NO;不工作

2 个答案:

答案 0 :(得分:1)

这是一种黑客攻击,但以下工作

for(UIView* view in self.subviews)
    {
        if([[[view class] description] isEqualToString:@"UITableViewCellReorderControl"])
        {
            for(UIImageView* cellGrip in view.subviews)
            {
                if([cellGrip isKindOfClass:[UIImageView class]])
                    [cellGrip setImage:nil];
            }
        }
    }

答案 1 :(得分:1)

我在iOS7中使用它的解决方案是添加另一种方法来查找重新排序控件。由于iOS7中的tableview结构发生了变化,因此跟踪UITableViewCellReorderControl有点困难。它现在在UITableViewCellScrollView

解决方案如下

- (void)changeReorderControl:(UITableViewCell *)cell subviewCell:(UIView *)subviewCell
{
    if([[[subviewCell class] description] isEqualToString:@"UITableViewCellReorderControl"]) {

        [subviewCell.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

        UIImageView *imageView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hand"]];
        imageView.center = CGPointMake(subviewCell.frame.size.width/2 , subviewCell.frame.size.height/2);

        [subviewCell addSubview:imageView];
    }
}


- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    for(UIView* subviewCell in cell.subviews)
    {
            if([[[subviewCell class] description] isEqualToString:@"UITableViewCellScrollView"])                {
                for(UIView* subSubviewCell in subviewCell.subviews) {
                    [self changeReorderControl:cell subviewCell:subSubviewCell];
                }
            }
    }
}

希望你能得到这个想法。