Pertanyaan Dapatkan posisi Sel di UITableview


Saya mencoba mendapatkan posisi sel dalam tampilan tabel. dari kode ini saya mendapatkan posisi sel

int numberOfSections = [UITableView numberOfSections];
int numberOfRows = 0;
NSIndexPath *tempIndexPath = nil;
UITableViewCell *tempCell = nil;
for(int i=0;i<numberOfSections;i++)
{
     numberOfRows = [UITableView numberOfRowsInSection:i];
     for(int j=0;j<numberOfRows;j++
     {
           tempIndexPath = [NSIndexPath indexPathForRow:j inSection:i];
           tempCell = [UITableView cellForRowAtIndexPath:tempIndexPath];
           NSLog("Y postion for cell at (Row = %d,Section = %d) is :%f",tempCell.frame.origin.y);
     }  
}

itu menghitung sumbu y sel di tableview tapi masalah saya adalah saya ingin mendapatkan posisi sel di area terlihat rect tableview. yaitu jika tampilan tabel memiliki ukuran cgrectmake (0,0,200,500) dan tinggi sel adalah 100 piksel. jadi tableview akan menampilkan 5 baris. jika saya gulir ke bawah dan pilih baris ke-7. saya akan mendapatkan sumbu y 700. tetapi sel akan berada di dalam bingkai (0,02000000). Bagaimana saya bisa mendapatkan lokasi sel dalam bingkai ini (0,0200, 000).


31
2017-07-08 11:47


asal


Jawaban:


CATATAN: Saya harap, pertanyaan mungkin telah diperbarui lagi, silakan gunakan jawaban lain yang mungkin berlaku untuk Anda.

Anda dapat menggunakan visibleCells metode yang akan mengembalikan sel yang saat ini terlihat di tampilan tabel Anda:

NSArray *visibleCellsList=[tableview visibleCells];

for (UITableViewCell* currentCell in visibleCellsList) {

    NSLog(@"cell : %@ \n\n",currentCell.textLabel.text);

}

10
2017-07-08 11:56



Untuk mendapatkan posisi a UITableViewCell relatif terhadap tampilan, di mana lokasinya (misalnya relatif ke area yang terlihat):

Swift 3, Swift 4:

let rectOfCellInTableView = tableView.rectForRow(at: indexPath)
let rectOfCellInSuperview = tableView.convert(rectOfCellInTableView, to: tableView.superview)

print("Y of Cell is: \(rectOfCellInSuperview.origin.y)")

Swift 2:

let rectOfCellInTableView = tableView.rectForRowAtIndexPath(indexPath)
let rectOfCellInSuperview = tableView.convertRect(rectOfCellInTableView, toView: tableView.superview)

print("Y of Cell is: \(rectOfCellInSuperview.origin.y)")

Objective-C:

CGRect rectOfCellInTableView = [tableView rectForRowAtIndexPath: indexPath];
CGRect rectOfCellInSuperview = [tableView convertRect: rectOfCellInTableView toView: tableView.superview];

NSLog(@"Y of Cell is: %f", rectOfCellInSuperview.origin.y);

178
2017-09-19 15:49



Saya melakukannya seperti ini:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

Hanya itu yang harus saya lakukan, daripada saya semua cell.frame, cell.bounds, dll.


0
2017-07-08 12:10