หากคุณใช้ข้อ จำกัด autoLayout และ UITableViewAutomaticDimension ข้อผิดพลาดนี้ไม่ใช่ปัญหาที่ผิดพลาดที่จะทิ้งโดยการแทนที่ความสูงของคุณในโค้ด หมายความว่าการกำหนดความสูงของเซลล์โดยอัตโนมัติจะไม่ทำงานเนื่องจากคุณไม่มีข้อ จำกัด แนวตั้งที่เหมาะสม
หากคุณเหมือนฉันและได้รับข้อผิดพลาดนี้และต้องการความช่วยเหลือในการระบุว่าเซลล์ใดส่งข้อผิดพลาดคุณสามารถเพิ่มบรรทัดต่อไปนี้ก่อนที่จะส่งคืนเมธอด 'heightforRowAtIndexPath' ของคุณ
NSLog(@"Section %ld Row %ld", (long)[indexPath section], (long)[indexPath row]);
การดำเนินการนี้จะพิมพ์รายการส่วนและแถวที่ยาวออกมา แต่ข้อผิดพลาดจะปรากฏขึ้นทันทีหลังจากเซลล์ที่เป็นสาเหตุของข้อผิดพลาดและคุณสามารถระบุได้อย่างรวดเร็วว่าเซลล์ใดเป็นสาเหตุของปัญหาและแก้ไขข้อ จำกัด ของคุณตามนั้น สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับเซลล์คงที่ การแทนที่ความสูงด้วยตัวเลขที่ป้อนด้วยตนเองจะใช้ได้หากคุณไม่ได้ใช้ autoLayout และความสูงของเซลล์อัตโนมัติ แต่จะปิดใช้งานคุณสมบัติเหล่านี้เป็นหลักซึ่งเป็นวิธีแก้ปัญหาที่แย่มากหากเป็นสิ่งที่คุณพยายามใช้
หากคุณไม่เคยใช้เมธอด 'heightForRowAtIndexPath' มาก่อน แต่ต้องการดีบักข้อผิดพลาดนี้โดยไม่ต้องยกเลิกการตั้งค่า UITableViewAutomaticDimension ของคุณเพียงเพิ่มสิ่งนี้ลงในโค้ดของคุณ:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Section %ld Row %ld", (long)[indexPath section], (long)[indexPath row]);
return UITableViewAutomaticDimension;
}