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
Odpowiedz
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.
Nie wiem jak dziękować ... – WaaleedKhan
withRowAnimation: TAK jest błędny, powinieneś użyć wyliczenia np. withRowAnimation: UITableViewRowAnimationTop – ozba
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. –
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.
czy możesz mi powiedzieć o metodzie, którą już znasz? coz chcę to zaimplementować. – rptwsthi