Chcę móc przesuwać palcem w lewo lub w prawo w dowolnym miejscu w komórce widoku tabeli, aby usunąć komórkę z animacją bez wyświetlania przycisku usuwania. Jak mogę to zrobić?Przesuń palcem w lewo lub w prawo w dowolnym miejscu na UITableViewCell, aby usunąć komórkę bez przycisku usuwania?
Odpowiedz
Nie próbowałem tego i zaimplementowałem, ale dam mu szansę. Najpierw utwórz niestandardowy UITableViewCell, i niech mają 2 właściwości, które można wykorzystać
- odniesienie do Tableview jest on używany w.
- An indexPath znaleźć komórkę w Tableview. (Uwaga, to musi być aktualizowane za każdym razem, gdy usuniesz komórkę dla wszystkich komórek, w których to się zmieni)
W swojej cellForRowAtIndexPath:
, w której tworzysz komórkę niestandardową, ustaw te właściwości. Również dodać UISwipeGestureRecognizer do celi
cell.tableView=tableView;
cell.indexPath=indexPath;
UISwipeGestureRecognizer *swipeGestureRecognizer=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(deleteCell:)];
[cell addGestureRecognizer:swipeGestureRecognizer];
[swipeGestureRecognizer release];
upewnić, że gest odbiera tylko swipes poziomych.
-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if([[gestureRecognizer view] isKindOfClass:[UITableViewCell class]]&&
((UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionLeft
||(UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionRight)) return YES;
}
W swojej deleteCell:
-(void) deleteCell:(UIGestureRecognizer*)gestureRec
{
UIGestureRecognizer *swipeGestureRecognizer=(UISwipeGestureRecognizer*)gestureRec;
CustomCell *cell=[swipeGestureRecognizer view];
UITableView *tableView=cell.tableView;
NSIndexPath *indexPath=cell.indexPath;
//you can now use these two to perform delete operation
}
Nie zapominaj, że musisz ustawić kierunek rozpoznawania gestów podczas pierwszej inicjalizacji, aby dodać go do komórki. Coś takiego: swipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionRight; – ColossalChris
Apple, do cholery, za niedostarczenie '(void) cancelPreviousPerformRequestsWithTarget: (id) aTarget selector: (SEL) aSelector'. –
za to, że musisz dodać ten kod do swojego projektu.
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return YES if you want the specified item to be editable.
return YES;
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//add code here for when you hit delete
}
}
Else mor informacji u może przejść przez ten link enter link description here
Vivek2012 i iWill - dzięki za odpowiedzi, ale nie chcę pokazywać przycisku DELETE, istnieją już odpowiedzi na te w stackoverflow. Chcę, aby komórka została usunięta od momentu otrzymania gestu w lewo lub w prawo.przeczytaj mój opis dzięki – carbonr
wdrożyć
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;
tych dwóch metod, jeśli UITableViewCellEditingStyle jest UITableViewCellEditingStyleDelete, a następnie zrobić czegoś, aby usunąć komórki z
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
to wszystko.
Rozwiązanie zamieszczonych przez @MadhavanRP działa, ale jest to bardziej skomplikowane niż to musi być. Możesz przyjąć prostsze podejście i utworzyć jeden aparat rozpoznawania gestów, który obsługuje wszystkie przeciągnięcia, które występują w tabeli, a następnie uzyskać lokalizację przesunięcia palca, aby określić komórkę, którą użytkownik przeciągnął.
Aby skonfigurować rozpoznawania gest:
- (void)setUpLeftSwipe {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(swipeLeft:)];
[recognizer setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.tableView addGestureRecognizer:recognizer];
recognizer.delegate = self;
}
wywołać tę metodę w viewDidLoad
obsłużyć bezstykowa:
- (void)swipeLeft:(UISwipeGestureRecognizer *)gestureRecognizer {
CGPoint location = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
... do something with cell now that i have the indexpath, maybe save the world? ...
}
UWAGA: Twój vc musi implementować delegata gest Rozpoznawania .
- 1. iOS: przesuń palcem w lewo/w prawo pomiędzy zakładkami?
- 2. Jak usunąć UITableViewCell przesuń palcem, aby usunąć bounce
- 3. Przesuń, aby usunąć komórkę, nie anuluj akcji UIButton
- 4. Android libgdx przesuń palcem w lewo i w prawo, wykrywając gest słuchacza
- 5. deleteRowsAtIndexPaths: przesuń palcem, aby usunąć wiersze, nigdy nie zwolni komórki?
- 6. android listview przesuń palcem, aby usunąć jak w Gmail app
- 7. LibGDX - Pobierz Swipe Up lub przesuń w prawo itp?
- 8. Przesuń panel w prawo i w lewo za pomocą przycisku Kliknij C#
- 9. Jak zmienić aktywność, przesuwając palcem w lewo iw prawo?
- 10. NavigationDrawer wyłączyć przesuń w prawo
- 11. Uchwyt Przesuń w górę, przesuń w dół, przesuń w lewo i przesunięcie w prawo Gesty w app WinRT
- 12. Przesuń, aby usunąć opcję w problemach z wyświetlaniem UITableView.
- 13. Edytowanie tekstu w miejscu na UITableViewCell w miejscu?
- 14. iOS 8 UITableViewRowAction: Przesuń w lewo, obrazy?
- 15. Obróć ciało w JS, w lewo w prawo i w prawo w lewo
- 16. Przesuń, aby usunąć
- 17. UITableView konflikty gest machnięcia z UITableViewCell przesuń
- 18. Wyświetlić kontrolę kolejności UITableViewCell bez zmiany zawartości komórki w prawo?
- 19. Swift: usuń warstwę, bez usuwania UIView w UITableViewCell
- 20. Lista jonowa: przesuń, aby usunąć?
- 21. Android "przesuń palcem od lewej do prawej, aby usunąć", gest na elemencie listy, styl ICS
- 22. naciśnięcie klawisza jQuery w lewo/prawo nawigacja
- 23. "Przesuń palcem" gest nie działa poprawnie w WatchOS
- 24. Rozwiń w lewo/w prawo ciąg (i chomp)
- 25. NSTableView jak kliknąć w dowolnym miejscu w komórce, aby edytować tekst?
- 26. Sprawdź, czy ciąg ma spację pomiędzy (lub w dowolnym miejscu).
- 27. Umożliwia zaznaczanie kursora w dowolnym miejscu w UITextView
- 28. Efekt przewijania z gestem przesuń w iOS
- 29. Wyszukiwanie w dowolnym miejscu treści zamiast uruchamiania
- 30. Zamknij okno dialogowe kliknięcia (w dowolnym miejscu)
jeśli możesz, dodaj swój kod? –