2009-07-22 15 views
5

Mam UITableView i chcę udostępnić użytkownikowi funkcję usuwania wiersza, gdy poślizguje się lub kręci palcem po rzędzie. Znam styl edycji, który zapewnia okrągły czerwony przycisk z napisem -ve. Ale jak wdrożyć styl migotania. Widziałem wiele aplikacji, które go używają, więc Apple dostarcza do tego każdego wbudowanego delegata lub musimy napisać dla niego własny kontroler.Jak usunąć wiersz tabeli w iPhone'ie

+0

czy możesz mi powiedzieć o metodzie, którą już znasz? coz chcę to zaimplementować. – rptwsthi

Odpowiedz

32

W celu uzyskania bezstykowa wpłynąć trzeba zaimplementować widoku tabeli pełnomocnikowi

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

metodę, zapewni dostęp do interakcji machnięcia do usunięcia. Zazwyczaj udostępniam interakcję edycyjną dla widoków tabeli, w których usunięcie jest możliwe, ponieważ interakcja z przesunięciem jest nieco ukryta przed użytkownikami.

Jako przykład:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView beginUpdates];  
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // Do whatever data deletion you need to do... 
    // Delete the row from the data source 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop]; 
    }  
    [tableView endUpdates]; 
} 

nadzieję, że pomoże.

+0

Nie wiem jak dziękować ... – WaaleedKhan

+1

withRowAnimation: TAK jest błędny, powinieneś użyć wyliczenia np. withRowAnimation: UITableViewRowAnimationTop – ozba

+0

Rozważ zmianę '... UITableViewRowAnimationTop];' na '... UITableViewRowAnimationAutomatic];'. Dokonano tego w nieprawidłowej edycji (powinien to być komentarz), więc cofnąłem ją. Jeśli jest to prawidłowe, rozważ odpowiednie zaktualizowanie swojego rozwiązania. –

2

Jestem prawie pewien, że istnieje przykładowa aplikacja, która to robi. Bardziej konkretna odpowiedź wkrótce.

AKTUALIZACJA: iPhoneCoreDataRecipes podaje prawdopodobnie dokładnie to, czego szukasz.

Na temat, tutaj jest jednym z najsłodszych przewidzianych metod:

// If I want to delete the next 3 cells after the one you click 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSMutableArray* indexPaths = [NSMutableArray array]; 
    for (int i = indexPath.row + 3; i < indexPath.row + 3; i++) 
    { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
    } 

    [tableView beginUpdates]; 
    [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 
    [tableView endUpdates]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

myślę, że istnieje prostszy sposób, aby osiągnąć to, co chcesz, ale potem znowu jest to całkiem proste. Jedyną trudnością może być usunięcie siebie ... po prostu uważaj na segfaults.