2010-02-22 9 views

Odpowiedz

7

Ważne: w tej odpowiedzi założono, że system iPhone OS 3.x. See the answer above dla iOS 5.x

Nie wiem, co to jest "fajny efekt animacji, podobnie jak w aplikacji Lista zakupów". Nie wszyscy mają tę aplikację.


Wierszy nie można przenosić programowo.

Jednak można jednocześnie wstawiać i usuwać wiersze, aby symulować ruch.

[tableView beginUpdates]; 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:rowToMove] 
       withRowAnimation:UITableViewRowAnimationLeft]; 
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPathToMoveTo] 
       withRowAnimation:UITableViewRowAnimationLeft]; 
// update your dataSource as well. 
[tableView endUpdates]; 
+0

Kenny, Efekt Rozmawiałem o to spadającego animacji wiersz, po prostu jak przeciąganie palcem, gdy stół jest w trybie przestawiania. Zastanawiam się, jak to się stało. Myślę o przeniesieniu zawartości komórki do półprzezroczystego uiimage, a następnie przeniesieniu obrazu z animacją do wybranej lokalizacji, ale nie jestem pewien, czy to najlepsze rozwiązanie. – Alex

+0

Znajdziesz rozwiązanie? Mam podobne pytanie: http://stackoverflow.com/questions/5112588/how-make-the-same-animation-like-uitableview-reorder-of-cells & http://stackoverflow.com/questions/5315990/ how-copy-cells-between-tables-as-the-pulse-app – mamcx

+0

Może po prostu potrzebujesz efektu RowAnimation do: UITableViewRowAnimationBottom – ugiflezet

2

Jest to podobne do tego, co zrobiłem, aby umożliwić przeciąganie i upuszczanie z jednego przewijania do drugiego.

Będziesz chciał utworzyć duplikat/dummy cell (dla efektu wizualnego), następnie usunąć oryginalną komórkę, a następnie animować duplikat, a następnie wstawić na dół i ostatecznie usunąć duplikat/dummy cell.

26

w iOS 5 można to zrobić za pomocą następującego UITableView selektora:

- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath 

Na przykład:

[self.tableView moveRowAtIndexPath:indexPath toIndexPath:[NSIndexPath indexPathForRow:[items count] - 1 inSection:1]]; 
+1

świetnie! link do selektora doc: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006943-CH3-SW55 – yonel

+0

Oczywiste pytanie uzupełniające jest jak dowiedzieć się tych indeksów po sortowaniu tablicy ...? Być może powinienem zrobić posortowaną kopię tablicy i dowiedzieć się przed i po indeksach każdego elementu? – devios1