Как избавиться от reorderControl при использовании повторного заказа? - PullRequest
1 голос
/ 01 августа 2011

Не так давно Я спросил о том, как переместить reorderControl view ближе к центру моей пользовательской ячейки, поэтому этот reorderControl нарушает пользовательский дизайн.Поскольку я не могу переместить это представление и мою ячейку всегда в режиме редактирования - я просто рисую этот reorderControl в правильном месте фона моей ячейки.Но теперь у меня есть два reorderControls) один из моего фона в нужном месте и один из iOSЕсли я установлю возвращаемое значение - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath в NO, iOS reorderControl исчезнет, ​​но я не смогу изменить порядок строк.

Как я могу удалить iOS reorderControl с экрана и при этом иметь возможность изменить порядок моих пользовательских UITableViewCell?

ps cell.showsReorderControl = NO;не работает

Ответы [ 2 ]

1 голос
/ 31 декабря 2013

Решение, которое я заставил работать в iOS7, - это добавить еще один метод, чтобы найти управление переупорядочением. Поскольку структура представления таблицы в iOS7 изменилась, отследить 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];
                }
            }
    }
}

Надеюсь, вы поймете идею.

1 голос
/ 13 августа 2012

Это что-то вроде хака, но следующее работает

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];
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...