2

我正在尝试将重新排序控件移动到单元格的左侧。我正在使用自定义单元格,并且我的单元格有按钮。我实际上可以使用以下函数将其向左移动。但是我的右键最初是默认重新排序控件所在的位置,因此即使在应用转换后也无法访问。不在后面的部分是可访问的。

作为参考,我使用了以下链接 http://b2cloud.com.au/how-to-guides/reordering-a-uitableviewcell-from-any-touch-point

如何在左侧对 UITableViewCell 进行重新排序控制?

#pragma mark - 
#pragma mark rows reordering

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    for(UIView* view in cell.subviews)
    {
        if([[[view class] description] isEqualToString:@"UITableViewCellReorderControl"])
        {
            UIView* resizedGripView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetMaxX(view.frame), 48)];
            [resizedGripView setBackgroundColor:[UIColor whiteColor]];
            [resizedGripView addSubview:view];
            [cell addSubview:resizedGripView];

            //  Original transform

           const CGAffineTransform transform = CGAffineTransformMakeTranslation(40 - cell.frame.size.width, 1);


            [resizedGripView setTransform:transform];
            /*for(UIImageView* cellGrip in view.subviews)
            {
                if([cellGrip isKindOfClass:[UIImageView class]])
                    [cellGrip setImage:nil];
            }*/
        }
    }
}

请看这张图片http://i.stack.imgur.com/xBDLG.png

在重新排序控件的原始位置无法访问单元格中的编辑按钮。休息工作正常。

4

2 回答 2

4

Xcode 8.2.1,斯威夫特 3.x

 override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.subviews.forEach() {
        if ($0.description.range(of: "UITableViewCellReorderControl") != nil) {
            let resizedGripView = UIView(frame: CGRect(x: 0, y: 0, width: $0.frame.maxX, height: $0.frame.maxY))
            resizedGripView.addSubview($0)
            cell.addSubview(resizedGripView)
            let transform = CGAffineTransform(translationX: $0.frame.size.width - cell.frame.size.width, y:  1)
            resizedGripView.transform = transform
        }
    }
}
于 2017-02-02T13:58:27.117 回答
1

试试这个,希望对你有帮助

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell
 forRowAtIndexPath:(NSIndexPath *)indexPath
{
    for(UIView* view in cell.subviews)
    {
        if([[[view class] description] isEqualToString:@"UITableViewCellReorderControl"])
        {

            UIView* resizedGripView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetMaxX(view.frame), CGRectGetMaxY(view.frame))];
            [resizedGripView addSubview:view];
            [cell addSubview:resizedGripView];

            //  Original transform
            const CGAffineTransform transform = CGAffineTransformMakeTranslation(view.frame.size.width - cell.frame.size.width, 1);
            //  Move custom view so the grip's top left aligns with the cell's top left

            [resizedGripView setTransform:transform];
        }
    }
}
于 2013-08-20T16:20:06.047 回答