2011-11-30 19 views
26
NSArray * arrayOfVisibleTVC=[BNUtilitiesQuick ListController].tableViewA.visibleCells; 
NSLog(@"array : %@", arrayOfVisibleTVC); 

wyświetlijak poznać ścieżkę indeksu UITableView.visibleCells?

"<UITableViewCell: 0x76c22a0; frame = (0 0; 320 75); autoresize = W; layer = <CALayer: 0x76bf770>>", 
"<UITableViewCell: 0x76cfec0; frame = (0 75; 320 75); autoresize = W; layer = <CALayer: 0x769d260>>", 
"<UITableViewCell: 0xe245f70; frame = (0 150; 320 75); autoresize = W; layer = <CALayer: 0xe245ed0>>", 
"<UITableViewCell: 0xe248980; frame = (0 225; 320 75); autoresize = W; layer = <CALayer: 0xe2488c0>>", 
"<UITableViewCell: 0xe24afa0; frame = (0 300; 320 75); autoresize = W; layer = <CALayer: 0xe24aee0>>" 

iz tego

UITableViewCell * lastObjectOfArray=arrayOfVisibleTVC.lastObject; 
int indexpathLastObject= (lastObjectOfArray.frame.origin.y/new.frame.size.height); 

Znam ostatni arrayOfVisibleTVC.lastObject że mogę używać, aby uzyskać indexpath. ale myślę, że istnieje inny sposób, aby uzyskać indeksu TableViewcell, który pokazał .. Ktoś może mi pomóc?

więc mogę indexpath z komórki jako liczba całkowita

+3

Czy spróbować *** indexPathForCell: ** * metoda? – EmptyStack

Odpowiedz

49

Oto metoda w klasie UITableView:

objective-c

- (NSArray *)indexPathsForVisibleRows 

Swift

public var indexPathsForVisibleRows: [NSIndexPath]? { get } 
+1

To wydaje się być lepszą odpowiedzią, chyba że się mylę. –

+1

@Ramis To dobrze, chyba że używasz widocznej ścieżki indeksu wierszy, aby dodawać i usuwać wiersze, co powoduje, że wiersze są dodawane lub usuwane w niewłaściwym indeksie. –

+0

@AshishPisey Pytanie dotyczyło widocznych wierszy, a odpowiedź dotyczy widocznych wierszy. – Ramis

9

UITableView ma sposobu, aby znaleźć indexPath komórki:

- (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell 

Wystarczy iteracyjne nad widzialnym tablicy komórki i przejść każdą komórkę, aby pobrać ścieżka indeksu.

for (UITableViewCell *cell in arrayOfVisibleTVC) { 
    NSIndexPath *path = [[BNUtilitiesQuick ListController].tableViewA indexPathForCell:cell]; 
    NSLog(@"%@", path); 
} 
+2

Sposób na kodowanie czegoś, co może być dużo łatwiejsze, patrz Ramis: odpowiedź: –

Powiązane problemy