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

sẽ hiển thịcách biết đường dẫn chỉ mục của 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>>" 

và với điều này

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

Tôi biết cuối cùng của arrayOfVisibleTVC.lastObject mà tôi sử dụng để có được indexPath. nhưng tôi nghĩ rằng có một cách khác để có được indexpath của TableViewcell cho thấy .. bất kỳ ai có thể giúp tôi?

vì vậy tôi có thể nhận được indexPath của tế bào như nguyên

+3

Bạn thử *** indexPathForCell: ** * phương pháp? – EmptyStack

Trả lời

49

Đây là phương thức trong lớp UITableView:

Objective-C

- (NSArray *)indexPathsForVisibleRows 

Swift

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

Điều này có vẻ là một câu trả lời tốt hơn trừ khi tôi sai. –

+1

@Ramis Phạt tiền này trừ khi bạn đang sử dụng đường dẫn chỉ mục hàng có thể nhìn thấy để thêm và xóa các hàng, làm cho các hàng được thêm vào hoặc xóa ở chỉ mục sai. –

+0

@AshishPisey Câu hỏi về các hàng có thể nhìn thấy và câu trả lời là về các hàng có thể nhìn thấy. – Ramis

9

UITableView có một phương pháp để tìm ra indexPath của một tế bào:

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

Chỉ cần lặp qua mảng tế bào có thể nhìn thấy bạn và vượt qua mỗi tế bào để có được đường dẫn chỉ mục.

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

Cách để nhiều mã cho một cái gì đó có thể dễ dàng hơn rất nhiều, xem câu trả lời Ramis –

Các vấn đề liên quan