Câu hỏi rất đơn giản: Làm thế nào để bạn tải tùy chỉnh UITableViewCell
từ các tệp Xib? Làm như vậy cho phép bạn sử dụng Trình tạo giao diện để thiết kế các ô của mình. Câu trả lời rõ ràng là không đơn giản do vấn đề quản lý bộ nhớ. Chủ đề này đề cập đến vấn đề và đề xuất một giải pháp, nhưng là phát hành trước NDA và thiếu mã. Đây là một chủ đề dài thảo luận về vấn đề mà không cung cấp một câu trả lời dứt khoát.
Đây là một số mã tôi đã sử dụng:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Để sử dụng mã này, hãy tạo MyCell.m / .h, một lớp con mới UITableViewCell
và thêm IBOutlets
cho các thành phần bạn muốn. Sau đó tạo một tệp "rỗng XIB" mới. Mở tệp Xib trong IB, thêm một UITableViewCell
đối tượng, đặt định danh của nó thành "MyCellIdentifier" và đặt lớp của nó thành MyCell và thêm các thành phần của bạn. Cuối cùng, kết nối IBOutlets
với các thành phần. Lưu ý rằng chúng tôi đã không đặt Chủ sở hữu tệp trong IB.
Các phương pháp khác ủng hộ việc thiết lập Chủ sở hữu tệp và cảnh báo rò rỉ bộ nhớ nếu Xib không được tải thông qua một lớp nhà máy bổ sung. Tôi đã thử nghiệm ở trên trong Dụng cụ / Rò rỉ và không thấy rò rỉ bộ nhớ.
Vì vậy, cách chính tắc để tải các tế bào từ Xibs là gì? Chúng tôi có đặt Chủ sở hữu tệp không? Chúng ta có cần một nhà máy không? Nếu vậy, mã cho nhà máy trông như thế nào? Nếu có nhiều giải pháp, hãy làm rõ ưu và nhược điểm của từng giải pháp ...