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

visualizzeràcome sapere indexpath di 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>>" 

e con questo

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

So che l'ultimo dei arrayOfVisibleTVC.lastObject che uso per ottenere indexpath. ma penso che ci sia un altro modo per ottenere indexpath di TableViewcell che ha mostrato .. qualcuno mi può aiutare?

modo da poter ottenere indexpath di cellula come intero

+3

Hai provato il *** indexPathForCell: ** * metodo? – EmptyStack

risposta

49

Qui è il metodo in classe UITableView:

Objective-C

- (NSArray *)indexPathsForVisibleRows 

Swift

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

Questa sembra essere una risposta migliore a meno che non mi sbagli. –

+1

@Ramis Questa multa a meno che non si utilizzi il percorso index delle righe visibili per aggiungere ed eliminare righe, il che provoca l'aggiunta o l'eliminazione di righe nell'indice errato. –

+0

@AshishPisey La domanda riguardava le righe visibili e la risposta riguarda le righe visibili. – Ramis

9

UITableView ha un metodo per trovare l'indexPath di una cellula:

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

Basta iterare l'array cellule visibile e passare ogni cella per ottenere il percorso dell'indice.

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

Un sacco di codice per qualcosa che può essere molto più facile, vedere Ramis risposta –

Problemi correlati