Pergunta

Eu passei por essa questão que mostra o seguinte código:

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
    return @"Sagar";
}

E se eu quiser uma imagem personalizada em vez do botão vermelho padrão?

Foi útil?

Solução

Luvieere está certo - se você deseja a mesma metáfora "excluir", deseja mantê -la no botão vermelho que a Apple fornece. Por que mudar isso? É globalmente reconhecível como o padrão Para botões de exclusão.

Embora, se você quiser algo como Tweetie, onde você completamente Mudar o comportamento de deslizar, você pode usar algo como o AbtableViewCell, onde você acabou de desenhar em sua própria opinião. Faça uma exibição de tabela personalizada, substitua -TouchesBegan: WithEvent: e verifique se há toques. Calcule o delta dos dois toques (em TouchesMoved: WithEvent :) e mova sua própria visão.

Outras dicas

Implementar este método na célula personalizada

- (void)willTransitionToState:(UITableViewCellStateMask)state{
    [super willTransitionToState:state];
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
        for (UIView *subview in self.subviews) {
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                UIImageView *deleteBtn = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
                [deleteBtn setImage:[UIImage imageNamed:@"delete.png"]];
                [[subview.subviews objectAtIndex:0] addSubview:deleteBtn];
                [deleteBtn release];
            }
        }
    }
}

Esta é uma resposta tardia, mas espero que alguém possa achar isso útil. Portanto, a resposta aceita parece meio complicada para mim, e a resposta do @user1684899 só funciona se você quiser alterar a aparência do botão Excluir. Quero alterar completamente a aparência do botão Excluir (ou seja, sua moldura, posição etc.), então minha solução é adicionar meu próprio botão de exclusão à minha célula personalizada e mantê -la inicialmente escondida, e apenas mostrá -la quando a célula estiver no modo de edição. O que é mais importante, quero ocultar o botão Excluir original do iOS e suportar compatibilidade com versões anteriores, e aqui está o meu truque:

- (void)willTransitionToState:(UITableViewCellStateMask)state
{
    [super willTransitionToState:state];
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask)
    {
        if (!IS_IOS_7){
            for (UIView *subview in self.subviews)
            {
                if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"])
                {
                    // hide original button
                    [[subview.subviews objectAtIndex:0] setHidden:YES];
                    // show my custom button
                    [self.deleteButton setHidden:NO];
                }
            }

        } else {
            for (UIView *subview in self.subviews) {
                for (UIView *subview2 in subview.subviews) {
                    if ([NSStringFromClass([subview2 class]) rangeOfString:@"Delete"].location != NSNotFound) {
                        // hide original button
                        [subview2 setHidden:YES];
                        // show my custom button
                        [self.deleteButton setHidden:NO];
                    }
                }
            }
        }
    } else {
        // hide my custom button otherwise
        [self.deleteButton setHidden:YES];
    }
}

E não se esqueça de acrescentar:

[cell.deleteButton addTarget:self action:@selector(deleteEntryAtIndexPath:) forControlEvents:UIControlEventTouchUpInside];

dentro cellForRowAtIndexPath, para que você possa adicionar tudo o que quiser quando o botão Excluir for clicado. Aqui está o meu resultado:

enter image description here

O padrão em todo o sistema para a ação pretendida de mergulho na lista, como você disse no comentário sobre a resposta de Luvieere, seria usar o acessório de células de divulgação detalhada (seta circulante azul), não o gesto de deslizamento.

Dito isto, se você ainda deseja usar a ação de furto para isso, não há como fornecer seu próprio botão sem interceptar e reimplementar completamente o gesto de furto, como o que Tweetie faz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top