ฉันตรวจพบแนวทางอื่น โดยพื้นฐานแล้ว: Move = Cut + Paste
วิธีนี้คุณทำ:
- ทำให้มุมมองย่อยทั้งหมดของคุณเป็นลูกของมุมมองผู้ปกครองใหม่ (P ')
- เก็บข้อ จำกัด (เกือบ) ทั้งหมดของคุณไว้ใน Storyboard ที่ใช้เค้าโครงอัตโนมัติ
- รักษาตำแหน่งสัมพัทธ์ของมุมมองย่อยของคุณ (เฟรม) ต่อกัน
วิธีนี้คุณจะไม่:
- แก้ไขไฟล์ Storyboard ในโปรแกรมแก้ไขข้อความ
ฐานเป็นสิ่งที่มุมมองของแต่ละคนยกเว้นหนึ่ง (root) ในสตอรี่บอร์ดมีมุมมองที่แม่ของมัน ถัดไปเมื่อคุณคัดลอก / ย้าย subviews หลายท่านสูญเสียเฟรมและข้อ จำกัด
คำตอบนั้นค่อนข้างง่าย คุณทำสำเนาของมุมมองย่อย (SV) ของคุณโดยคัดลอกมุมมองระดับบนสุด (P) ไปยังมุมมองหลักใหม่ (P ') ด้วยวิธีนี้คุณอาจต้องสร้างเฉพาะข้อ จำกัด จากมุมมองใหม่ของพาเรนต์ (P ') ไปยังมุมมองพาเรนต์ใหม่ แต่ไม่ใช่สำหรับทุกมุมมองย่อยที่คุณต้องการย้าย
หลังจากที่คุณทำสำเนามุมมองหลัก (P) เป็นมุมมองใหม่ (P ') จากมุมมองใหม่ (P') คุณ:
- นำเด็กทั้งหมดออกยกเว้นเด็กที่คุณต้องการย้าย
- สร้างข้อ จำกัด พาเรนต์ใหม่ (P ')
- สร้างช่องทางการสร้างส่วนต่อประสานที่เป็นไปได้ใหม่เป็น (SVs ')
และจากมุมมองของผู้ปกครองดั้งเดิม (P) คุณ:
- นำเด็กทั้งหมดที่คุณต้องการย้ายออก
ก่อน:
มุมมอง 1
ดู 2
ป
SVs ที่คุณต้องการย้าย
SVs- คุณไม่ต้องการย้าย
มุมมอง 3
หลังจาก:
มุมมอง 1
ดู 2
ป
SVs- คุณไม่ต้องการย้าย
มุมมอง 3
P '
SV ที่คุณต้องการย้าย
ฉันควรเน้นว่าสิ่งนี้ไม่สามารถสรุปได้ดีหากคุณมีเช่น UIScrollView เป็นมุมมองหลัก จากนั้นสำเนาของมันจะเป็น UIScrollView อีกครั้งสิ่งที่อาจไม่เป็นที่ต้องการ
อีกประการหนึ่งคือเมื่อคุณลบมุมมองย่อย (SV) บางส่วนในมุมมองหลักดั้งเดิม (P) คุณอาจต้องสร้างข้อ จำกัด บางอย่างขึ้นมาใหม่หากมุมมองย่อยอื่น ๆ (ที่ไม่สามารถเคลื่อนย้ายได้) อ้างถึง แต่คุณควรทำอย่างนั้นต่อไป