Pregunta

He pasado por esta pregunta que muestra el siguiente código:

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

¿Qué sucede si deseo una imagen personalizada en lugar del botón rojo predeterminado?

¿Fue útil?

Solución

luvieere tiene razón, si desea que " eliminar " Metáfora, debes mantenerla en el botón rojo que Apple proporciona. ¿Por qué cambiarlo? Es reconocible globalmente como el estándar para los botones de eliminación.

Aunque, si quieres algo como Tweetie, donde completamente cambia el comportamiento de deslizar, puedes usar algo como ABTableViewCell donde solo dibujes en tu propia vista. Cree una vista de tabla personalizada, anule -touchesBegan: withEvent :, y compruebe si hay toques. Calcule el delta de los dos toques (en toques Movido: conEvento :) y mueva su propia vista.

Otros consejos

Implementar este método en celdas personalizadas

- (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 es una respuesta tardía, pero espero que alguien pueda encontrar esto útil. Así que la respuesta aceptada parece algo complicada para mí, y la respuesta de @ user1684899 solo funciona si solo desea cambiar el aspecto del botón de eliminar. Quiero cambiar completamente la apariencia del botón de eliminar (es decir, su marco, posición, etc.), por lo que mi solución es agregar mi propio botón de eliminar a mi celda personalizada y mantenerlo inicialmente oculto, y solo mostrarlo cuando la celda esté en el modo de edición. Lo que es más importante, quiero ocultar el botón de eliminación original de iOS y la compatibilidad con versiones anteriores, y aquí está mi truco:

- (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];
    }
}

Y no te olvides de agregar:

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

en cellForRowAtIndexPath , para que pueda agregar cualquier cosa que desee cuando se haga clic en el botón Eliminar. Aquí está mi resultado:

ingrese la descripción de la imagen aquí

El estándar de todo el sistema para la acción prevista de inmersión en la lista, como dijiste en el comentario sobre la respuesta de luvieere, sería usar el accesorio de celda de revelación de detalle (flecha en círculo azul), no el gesto de deslizar.

Dicho esto, si aún deseas utilizar la acción de deslizar para esto, no hay manera de proporcionar tu propio botón sin interceptar manualmente y reimplementar completamente el gesto de deslizar, como lo hace Tweetie.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top