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

UITableView.visibleCellsのindexpathを知るには?

"<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>>" 

が表示され、この

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

と私はindexpathを取得するために使用することarrayOfVisibleTVC.lastObjectの最後を知っています。しかし、私はそこに示したTableViewcellのindexpathを取得する別の方法があると思います..いずれか私を助けることができますか?

私は整数として、セルのindexpathを得ることができますので、

+3

あなたは*** indexPathForCellてみました* 方法? – EmptyStack

答えて

49

はのUITableViewクラスのメソッドです:**:

Objective-Cの

- (NSArray *)indexPathsForVisibleRows 

スウィフト

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

を参照してください。これは、私が間違っていない限り、より良い答えと思われます。 –

+1

@Ramis可視の行indexpathを使用して行を追加および削除すると、間違ったインデックスで行が追加または削除されない限り、この問題は発生しません。 –

+0

@AshishPisey質問は目に見える行についてのもので、回答は目に見える行についてです。 – Ramis

9

のUITableViewは、セルのindexPathを見つけるための方法があります。

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

だけで得るためにあなたの可視セルの配列を反復処理し、各セルを渡しますインデックスパス。ここで

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

ラスの答え –

関連する問題