2015-10-20 11 views
8

Ho cercato un paio di articoli ma non ho trovato quello che cercavo. Fondamentalmente, voglio mostrare il pulsante Elimina su ogni riga ma non voglio usare la proprietà UITableView.editing. Perché sembra così;UITableViewCell, mostra il pulsante di cancellazione in stile swipe senza scorrimento

enter image description here

Ci saranno pulsante "Modifica". Quando l'utente fa clic su di esso, il pulsante Elimina sarà simile allo scorrimento.

C'è qualche possibilità di mostrare pulsanti di cancellazione come questo;

enter image description here

forse c'è un qualche modo a che fare con esso. Altrimenti, creerò una visualizzazione personalizzata per questo.

Grazie per il vostro consiglio.

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return YES if you want the specified item to be editable. 
    return YES; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 

     //Do something... 
    } 
} 
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
      editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 

    return UITableViewCellEditingStyleDelete; 

} 
+0

do u want pulsante elimina come image2 a Tableview? –

+0

@bhavinramani si Voglio eliminare i pulsanti apparirà come image2. Ci sarà il pulsante "Modifica" e quando si fa clic su di esso tutte le righe dovrebbero apparire come immagine2. –

+0

La cella personalizzata tableview è l'unico modo per andare per te, poiché il pulsante di eliminazione alla fine della cella non sarebbe visibile per tutte le celle in tableview contemporaneamente (come hai elaborato nella schermata) – viral

risposta

2
  • aggiungere una proprietà booleana: @property BOOL didPressEdit;
  • Aggiungi UIButton-UITableViewCell
  • Premendo modificare, didPressEdit diventa TRUE e UITableView ricarica, in modo tale che cell.deleteButton.hidden = !didPressEdit; che rende tutto Eliminare i pulsanti disponibili
  • Quando si preme elimina, rimuovi oggetto dall'array datasource, ricarica tableview

Spero che questo aiuti

0

È possibile utilizzare un metodo delegato UITableView per chiedere tali azioni. Implementare questo metodo nel modo seguente:

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewRowAction *modifyAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 
    // Respond to the action. 
    }]; 
    modifyAction.backgroundColor = [UIColor blueColor]; 
    return @[modifyAction]; 
} 

Naturalmente è possibile restituire più azioni e personalizzare il colore del testo e dello sfondo.

implementazione di questo metodo è necessario anche per rendere la riga modificabile:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
     if (editingStyle == UITableViewCellEditingStyleDelete) { 
      [self.objects removeObjectAtIndex:indexPath.row]; 
      [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
     } else if (editingStyle == UITableViewCellEditingStyleInsert) { 
      // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view. 
     } 
    } 

è necessario chiamare il metodo editActionsForRowAtIndexPath sul pulsante di modifica clic.

-(void)buttonTouched:(id)sender{ 

     UIButton *btn = (UIButton *)sender; 
     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:btn.tag inSection:0]; 
     [self tableView:self.tableView editActionsForRowAtIndexPath:indexPath]; 
    } 

    - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
     // Return NO if you do not want the specified item to be editable. 
     return YES; 
    } 
+0

Non sono sicuro che hai capito la domanda L'OP ha un'esigenza specifica di rendere disponibile il pulsante Elimina senza scorrere e per tutte le righe in tableview alla pressione del pulsante di modifica. Non vedo nulla di tutto ciò che è stato ottenuto con la risposta che hai fornito. – viral

2
-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewRowAction *moreAction2 = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"Edit" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ 
     [self.heartCartTabel setEditing:NO]; 
     [self editButtonClicked:indexPath.row]; 
    }]; 
    moreAction2.backgroundColor = [UIColor blueColor]; 

    UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ 

     [self tableView:self.heartCartTabel commitEditingStyle: UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath]; 
     //  [self.heartCartTabel deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
    }]; 

    return @[deleteAction, moreAction2]; 
} 

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return YES; 
} 

- (IBAction)editButtonClicked:(int)indexNumber { 

} 
Problemi correlati