2012-06-23 27 views
9

Tôi có một UITableView với các ô tĩnh và tôi đang cố gắng thay đổi chiều cao của ô khi nó đáp ứng một điều kiện. Các điều kiện đang được đáp ứng nhưng chiều cao của tế bào sẽ không thay đổi.Làm cách nào để đặt ô tĩnh UITableView thành chiều cao tùy chỉnh?

Mã Tôi đang sử dụng là

[self.tableView setRowHeight:10]; 

self.tableView rowHeight = 10; 

Cả trong số này sẽ thay đổi chiều cao hàng của các tế bào Có một cách khác để thay đổi chúng?

+0

có thể trùng lặp của [Chiều cao khác nhau cho ô thay thế trong UITableView] (http://stackoverflow.com/questions/3529246/different-height-for-alternative-cell-in-uitableview) – outis

Trả lời

18

Bạn cần phải thực hiện các đại biểu-phương pháp sau đây trong .m của tableview của bạn:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return customTableCellHeight; 
} 

Và sau đó thay đổi giá trị của customTableCellHeight:

if (condition) { 
    customTableCellHeight = 80; // or whatever 
} 

Khi chiều cao ô trong bảng của bạn cần phải thay đổi (như khi điều kiện thay đổi, bạn cần gọi số

[self.tableView reloadData]; //This calls heightForRowAtIndexPath for all cells 
+0

Điều này có vẻ hoạt động, cảm ơn – user1282180

+2

Nó không cần cuộc gọi 'reloadData'. –

+2

Bạn cần phải gọi reloadData không phải bên trong heightForRowAtIndexPath, nhưng bên ngoài nó, khi điều kiện * thay đổi *. Điều này sẽ làm cho tính toán lại chiều cao và sẽ cho phép kích thước động của các tế bào. – kgiannakakis

0

bạn có thể sử dụng tính năng này cho tất cả hàng tableview

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return 100 
    } 
Các vấn đề liên quan