การจ่ายอัตโนมัติจะถูกละเว้นใน UITableViewCell ที่กำหนดเอง


93

แม้จะมีการกำหนดข้อ จำกัด ให้กับองค์ประกอบทั้งหมดรวมถึงแนวตั้งที่จำเป็นสำหรับเซลล์ในการคำนวณความสูง แต่ดูเหมือนว่าเค้าโครงอัตโนมัติจะถูกละเว้น: เซลล์ทั้งหมดจะถูกบีบ

นี่คือภาพหน้าจอของผลลัพธ์และข้อ จำกัด ในกระดานเรื่องราว ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

ใน VC ที่เก็บ tableView นี่คือรหัสในviewDidLoad:

tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension

การแสดงความคิดเห็นในบรรทัดที่สองจะทำให้เซลล์มีความสูง 120.0 แต่ระบบจะเพิกเฉยต่อการเลือกอัตโนมัติ

ขอบคุณ


อัปเดต

เพื่อลดความซับซ้อนของอินเทอร์เฟซฉันได้ทิ้งป้ายกำกับเดียวไว้เป็นข้อ จำกัด :

  • พื้นที่ชั้นนำสู่ superview
  • พื้นที่ด้านบนสุดเพื่อดูภาพรวม
  • ความกว้างและความสูงคงที่ (100 & 100)
  • ช่องว่างด้านล่างถึงระยะขอบคอนเทนเนอร์เพื่อให้แน่ใจว่าเซลล์มีข้อ จำกัด แนวตั้งทั้งหมดเพื่อกำหนดความสูง

และด้วยอินเทอร์เฟซที่เรียบง่ายนี้การจัดวางอัตโนมัติจึงยังไม่ถูกนำมาพิจารณาซึ่งบอกเป็นนัยว่าปัญหาไม่ได้มาจากข้อ จำกัด ที่ตั้งไว้ไม่ดี

ในตัวตรวจสอบขนาดความสูงของแถวจะถูกตั้งค่าไว้ที่ 120 และเลือกกำหนดเอง เซลล์มีคลาสที่กำหนดเองที่ถูกต้องตัวระบุการใช้ซ้ำของเซลล์ถูกต้อง


อัปเดต: พบโซลูชัน

นี่เป็นข้อผิดพลาดง่ายๆดูคำตอบของฉันด้านล่าง


ตรวจสอบเทอร์มินัลการดีบักของคุณ - มีบันทึก NSLayoutConstraint อยู่ในนั้นหรือไม่ซึ่งแนะนำว่ามีบางอย่างไม่ทำงานตามที่คาดไว้หรือไม่?
Matthew Hallatt

ไม่มีอะไรปรากฏในเทอร์มินัลการแก้ปัญหา @MatthewHallatt ขอบคุณ
Kqtr

@Kqtr ลองแสดงความคิดเห็นสองบรรทัดนี้แล้วเรียกใช้ตามปกติหนึ่งครั้งเพื่อตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่
Tushar Sharma

@TusharSharma การแสดงความคิดเห็นทั้งสองบรรทัดมีผลเช่นเดียวกับการแสดงความคิดเห็นเฉพาะบรรทัด rowHeight: เซลล์มีความสูง 120.0 แต่การจัดวางอัตโนมัติไม่ทำงาน
Kqtr

1
ตัวสร้างอินเทอร์เฟซแสดงข้อ จำกัด ว่าขาดหายไปหรือไม่ชัดเจนหรือไม่? ตรวจสอบเครื่องหมายอัศเจรีย์สีเหลืองหรือสีแดงเล็กน้อย
Matthew Hallatt

คำตอบ:


250

การจัดวางอัตโนมัติถูกละเว้นเนื่องจากทั้งเซลล์ต้นแบบและ UIView ของเซลล์ได้รับคลาสเซลล์ที่กำหนดเองใน IB

การตั้งค่า UIView กลับไปที่คลาส UIView ช่วยแก้ปัญหาได้

เพียงเพื่อให้ชัดเจน


2
ฉันติดอยู่ในปัญหานี้เป็นเวลาหลายชั่วโมงและสิ่งนี้จะแก้ได้ขอบคุณ!
candidev

ฉันเสียเวลาเกือบทั้งวันจนกระทั่งมาที่นี่ .... ขอบคุณมาก
เกิดใหม่

-3

ฉันคิดว่าปัญหาคือคุณกำลังดำเนินการ:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: 
IndexPath) -> CGFloat {

 return x
}

คุณต้องลบฟังก์ชันนี้ตามลำดับสำหรับ tableview เพื่อคำนวณความสูงอัตโนมัติสำหรับเซลล์


ขอบคุณขออภัยที่ไม่ได้ลบล้าง: จริงๆแล้วฉันไม่มีผู้รับมอบสิทธิ์สำหรับ tableView นี้เป็นเพียงแหล่งข้อมูลเท่านั้น
Kqtr

คุณได้ตั้งค่าข้อ จำกัด การดูข้อความให้กับขอบทั้งหมดของเซลล์หรือไม่ และคุณปิดการเลื่อนของ textView หรือไม่?
Jaafar Barek

ป้ายกำกับแบบหลายบรรทัด (0 บรรทัด) มีข้อ จำกัด สำหรับ 1) ระยะห่างแนวตั้งโดยมีตัวเลขทางด้านซ้าย 2) ช่องว่างด้านบนถึงซุปเปอร์วิว 3) ช่องว่างต่อท้ายไปยังซุปเปอร์วิวและ 4) ช่องว่างด้านล่างที่มีป้ายกำกับถามโดย
Kqtr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.