Tôi sử dụng UITableView và tôi muốn thay đổi chiều cao các ô khác nhau. Nhưng tôi không muốn sử dụng dữ liệu tải lại cho beacause này xem bảng của tôi chứa UITextView mà tôi chỉnh sửa bây giờ và UIKeyBoard là lên.cách thay đổi ô chiều cao trong uitableview mà không cần tải lại dữ liệu
16
A
Trả lời
16
Bạn đang tìm phương thức reloadRowsAtIndexPaths: phương thức trên UITableView. Nó sẽ kích hoạt tính toán lại chiều cao (và sau đó vẽ lại) của các ô cụ thể. Nó thậm chí có thể tạo hiệu ứng điều chỉnh để bạn có thể thực hiện cập nhật trong thời gian thực khi người dùng đang cuộn, sao cho chế độ xem bảng không "giật giật" hoặc "bước nói lắp" trong khi chiều cao được tính toán lại. Tôi chỉ thực hiện thành công để làm những gì bạn mô tả.
0
Bạn có thể gọi beginUpdates && endUpdates
, Những ý gây cao ô trong bảng được recaluclated, mà không cần tải lại toàn bộ tế bào
UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()
self.tableView.endUpdates()
// Re-enable animations
UIView.setAnimationsEnabled(true)
Reloading bảng có thể bỏ qua những bàn phím nếu chiều cao của hàng thay đổi. – aksommerville
Rõ ràng. Điều này đúng bất cứ lúc nào bạn vẽ lại đầu vào trong UIKit ... –
Câu hỏi đặt ra một cách cụ thể để thực hiện điều đó mà không phải loại bỏ bàn phím. reloadRowsAtIndexPaths loại bỏ bàn phím –