2013-08-13 15 views
17

Trong UITableView tôi đã thiết lập chiều cao khác nhau của tôi cho các hàng khác nhau bằng cách sử dụng phương pháp đại biểu: tableView:heightForRowAtIndexPath:Làm thế nào tôi có thể nhận được chiều cao của một hàng cụ thể trong UITableView tôi

Ngay bây giờ cho một NSIndexPath, tôi muốn có được chiều cao Trước đây tôi đã gán cho một hàng cụ thể.

+0

Nếu bạn phải chọn dữ liệu ra khỏi chế độ xem bảng thì đã xảy ra sự cố. Làm thế nào để bạn tính chiều cao trong 'heightForRow ...'? Điều này nên được tính bằng cách sử dụng dữ liệu được lưu trữ trong bộ điều khiển và do đó có thể được tính toán lại. Hoặc nếu không, bạn nên lưu trữ chiều cao dọc theo phía dữ liệu. – Fogmeister

+0

@ Fogmeister Tôi không sử dụng UITableViewController, tôi đoán lưu trữ chiều cao là giải pháp duy nhất hơn ... – aneuryzm

+0

Bạn có thể không nhưng bạn đang triển khai 'UITableViewControllerDelegate' và' UITableViewControllerDataSource' trong "bộ điều khiển". Những thông tin này cần biết tất cả thông tin họ cần để có được chiều cao của một hàng cụ thể. Không hiển thị bất kỳ mã nào, thật khó để giúp đỡ thêm. – Fogmeister

Trả lời

59

Bạn có thể sử dụng này

CGRect frame = [tableView rectForRowAtIndexPath:indexPath]; 
NSLog(@"row height : %f", frame.size.height); 

Sử dụng frame.size.height bạn có thể nhận được chiều cao của hàng cụ thể

Swift 3

let frame = tableView.rectForRow(at: indexPath) 
print(frame.size.height) 
+0

Tuyệt vời! Cảm ơn nhiều! – DmitryKanunnikoff

4

Simplly Sử dụng

tableView: heightForRowAtIndexPath

phương pháp

int row = 1; 

int section = 0; 

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section]; 

float height = [self tableView:tableView heightForRowAtIndexPath:indexPath]; 

Hope wil này giúp cho bạn :)

3
-(CGFloat)getHeightAtIndexPath:(NSIndexPath *)indexPath{ 
    if(indexPath.row == 0) 
     return 20.0; 
    else if(indexPath.row == 4) 
     return 40.0; 

    return 50.0; //Default 

} 

Gọi chức năng trên trong tableView:heightForRowAtIndexPath: như

return [self getHeightAtIndexPath:indexPath]; 

Và bạn có thể sử dụng sam chức năng điện tử trên nút nhấn hành động nhấp của một nút bên trong một ô cụ thể, có button.tag=indexPath.row

-(IBAction)btnClick:(id)sender{ 
    UIButton *btn=(UIButton *)sender; 

    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:btn.tag inSection:0]; 

    CGFloat height=[self getHeightAtIndexPath:indexPath]; 

}