2009-09-03 17 views
10

Mam aplikację na iPhone'a korzystającą z funkcji uitableview, w której chciałbym, aby kontrolki "zmieniające kolejność" zawsze były wyświetlane, a użytkownik może przesuwać palcem w celu usunięcia wierszy.Przewiń, aby usunąć, gdy jest już w trybie edycji.

Podejście Jestem obecnie biorąc jest umieszczenie tableview w trybie edycji i pozwalają na wybór trybu edycji

self.tableView.editing = YES; 
self.tableView.allowsSelectionDuringEditing = YES; 

I wtedy ukryć czerwone okręgi usuwać za pomocą

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewCellEditingStyleNone; 
} 

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return NO; 
} 

nie mogę rysunek jak uzyskać gest machnięcia, aby wywołać "usuń" po prawej stronie, gdy tableview jest już w trybie edycji, czy ktoś może wskazać mi właściwy kierunek?

alternatywnie, jeśli ktoś wie jak zdobyć komórkę reorganizację kontroli pokazać, gdy nie jest w trybie edycji, które mogłyby być również praktycznym rozwiązaniem

okrzyki

+1

Pomyślałem, że dodałem, że zrobiłem * wiele * badań dotyczących tego problemu (mam dokładnie to samo wymaganie) i nie wierzę, że jest to możliwe bez wdrożenia własnej logiki przeciągania. Nie wierzę również, że można wyświetlać kontrolki ponownego zamówienia w trybie innym niż edycja bez podobnego powielania dużej części logiki Apple. –

+0

Zrobiłeś to? – AnjDenny

Odpowiedz

1

Gdy użytkownik przejeżdża w danym rzędzie, wy musisz gdzieś przechowywać odniesienie, abyś mógł zmienić wartość zwróconą przez editingStyleForRowAtIndexPath i shouldIndentWhileEditingRowAtIndexPath. Twój najlepszy zakład najprawdopodobniej użyje indexPathForCell w komórce, która jest przeciągnięta i przechowuje ją. Następnie w dwóch powyższych metodach wyświetlania musisz sprawdzić, czy NSIndexPath jest taki sam, czy nie (nie jestem pewien, czy będą one tym samym wskaźnikiem, czy też będziesz musiał porównać wartości przekroju/wiersza - wymagane testy). Jeśli pasują, wyświetl przycisk usuwania.

Pamiętaj, że możesz potrzebować połączenia z numerem reloadData na swojej tableView, aby efekt pojawił się bez przewijania w drugą stronę iz powrotem.

1

Zastanawiam się, czy sposób, w jaki teraz zmierzacie, złamie wytyczne interfejsu ludzkiego, co spowoduje, że aplikacja nie zostanie zatwierdzona.

Nie rozumiem, dlaczego nie można uchwycić gestu machnięcia, a następnie użyć go, aby "odkryć" czerwone ikony usuwania (znaku stop) dla potwierdzenia usunięcia?

Powiązane problemy