Tôi không di chuyển UITableView
trong một UIScrollView
. Tôi đặt kích thước khung hình là UITableView
thành kích thước nội dung của nó.Khi nào một contentSize của UITableView được đặt?
Khi tôi thêm hàng vào số UITableView
, tôi gọi insertRowsAtIndexPaths:withRowAnimation
: trên UITableView
. Sau đó, tôi gọi một phương thức để thay đổi kích thước khung hình của UITableView
:
- (void)resizeTableViewFrameHeight
{
// Table view does not scroll, so its frame height should be equal to its contentSize height
CGRect frame = self.tableView.frame;
frame.size = self.tableView.contentSize;
self.tableView.frame = frame;
}
Có vẻ như rằng mặc dù contentSize
chưa được cập nhật tại thời điểm này. Nếu tôi tự tính toán khung trong phương thức trên dựa trên số lượng hàng và phần, thì phương thức hoạt động đúng.
Câu hỏi của tôi là, làm thế nào tôi có thể nhận được UITableView
để cập nhật contentSize
của mình? Tôi cho rằng tôi có thể gọi reloadData
và điều đó có lẽ sẽ làm điều đó, nhưng có vẻ như không hiệu quả để tải lại toàn bộ bảng khi tôi chỉ chèn một ô.
Tôi đã thử điều này, nhưng nó không hiệu quả với tôi. Nhưng, tôi đã có thể đưa ra một giải pháp khác mà tôi đã đăng ở đây: http://stackoverflow.com/questions/17634617/when-does-uitableview-content-size-update-with-row-insert-delete-animation/18665064 # 18665064 – Daren
Ồ, đây chỉ dành cho nội dung ban đầu. Số dặm của bạn có thể thay đổi đối với các trường hợp khác khi kích thước đang được thay đổi sau đó. – Farthen
Lưu ý cho những người mà điều này không làm việc - tableView: estimatedHeightForRowAtIndexPath messes với contentSize, vì vậy bạn có thể có may mắn chỉ bằng cách loại bỏ việc thực hiện nó. – weienw