คำถามนั้นง่าย: คุณจะโหลด custom UITableViewCell
จากไฟล์ Xib ได้อย่างไร การทำเช่นนั้นช่วยให้คุณใช้ตัวสร้างส่วนต่อประสานเพื่อออกแบบเซลล์ของคุณ เห็นได้ชัดว่าคำตอบนั้นไม่ง่ายเนื่องจากปัญหาการจัดการหน่วยความจำ เธรดนี้กล่าวถึงปัญหาและแนะนำวิธีแก้ไข แต่เป็นการนำเสนอ NDA ล่วงหน้าและไม่มีรหัส นี่คือหัวข้อยาวที่กล่าวถึงปัญหาโดยไม่ต้องให้คำตอบที่ชัดเจน
นี่คือรหัสที่ฉันใช้:
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];
}
ในการใช้รหัสนี้ให้สร้าง MyCell.m / .h ซึ่งเป็นคลาสย่อยใหม่UITableViewCell
และเพิ่มIBOutlets
สำหรับส่วนประกอบที่คุณต้องการ จากนั้นสร้างไฟล์ "Empty XIB" ใหม่ เปิดไฟล์ Xib ใน IB เพิ่มUITableViewCell
วัตถุตั้งค่าตัวระบุเป็น "MyCellIdentifier" และตั้งค่าระดับเป็น MyCell และเพิ่มส่วนประกอบของคุณ ในที่สุดเชื่อมต่อIBOutlets
กับส่วนประกอบ โปรดทราบว่าเราไม่ได้ตั้งค่าเจ้าของไฟล์ใน IB
วิธีการอื่น ๆ สนับสนุนการตั้งค่าเจ้าของไฟล์และเตือนการรั่วไหลของหน่วยความจำหากไม่ได้โหลด Xib ผ่านคลาสโรงงานเพิ่มเติม ฉันทดสอบด้านบนภายใต้ Instruments / Leaks และไม่เห็นหน่วยความจำรั่ว
ดังนั้นวิธีบัญญัติของโหลดเซลล์จาก Xibs คืออะไร? เราตั้งเจ้าของไฟล์หรือไม่? เราต้องการโรงงานหรือไม่ ถ้าเป็นเช่นนั้นรหัสสำหรับโรงงานดูเหมือนเป็นอย่างไร หากมีการแก้ปัญหาหลายวิธีขอชี้แจงข้อดีและข้อเสียของแต่ละข้อ ...