Domanda

Ho esaminato questa domanda che mostra il seguente codice:

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

Che cosa succede se desidero un'immagine personalizzata anziché il pulsante rosso predefinito?

È stato utile?

Soluzione

luvieere ha ragione: se vuoi lo stesso " elimina " metafora, vuoi tenerlo sul pulsante rosso fornito da Apple. Perché cambiarlo? È globalmente riconoscibile come standard per i pulsanti di eliminazione.

Anche se, se si desidera qualcosa come Tweetie, in cui si completamente si modifica il comportamento dello scorrimento, è possibile utilizzare qualcosa come ABTableViewCell in cui si disegna semplicemente nella propria vista. Crea una vista tabella personalizzata, sovrascrivi -touchesBegan: withEvent :, e controlla i tocchi. Calcola il delta dei due tocchi (in touchMoved: withEvent :) e sposta la tua vista.

Altri suggerimenti

Implementa questo metodo nella cella personalizzata

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

Questa è una risposta tardiva, ma spero che qualcuno possa trovarlo utile. Quindi la risposta accettata mi sembra complicata, e la risposta di @ user1684899 funziona solo se vuoi solo cambiare l'aspetto del pulsante Elimina. Voglio cambiare completamente l'aspetto del pulsante Elimina (ovvero la sua cornice, posizione, ecc.), Quindi la mia soluzione è quella di aggiungere il mio pulsante Elimina alla mia cella personalizzata e tenerlo inizialmente nascosto, e mostrarlo solo quando la cella è in modalità modifica. Cosa c'è di più importante, voglio nascondere il pulsante di eliminazione originale di iOS e supportare la compatibilità con le versioni precedenti, ed ecco il mio trucco:

- (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 non dimenticare di aggiungere:

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

in cellForRowAtIndexPath , in modo da poter aggiungere tutto ciò che si desidera facendo clic sul pulsante Elimina. Ecco il mio risultato:

inserisci qui la descrizione dell'immagine

Lo standard a livello di sistema per l'azione di immersione in elenco prevista, come hai detto nel commento sulla risposta di Luvieere, sarebbe l'uso dell'accessorio cella di rivelazione dei dettagli (freccia cerchiata blu), non del gesto di scorrimento.

Detto questo, se vuoi ancora usare l'azione di scorrimento per questo, non c'è modo di fornire il tuo pulsante senza intercettare manualmente e reimplementare completamente il gesto di scorrimento, come quello che fa Tweetie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top