ฉันไม่เคยสร้างอินเทอร์เฟซผู้ใช้ที่สมบูรณ์โดยใช้ชุดเครื่องมือ UI ดังนั้นฉันจึงไม่มีประสบการณ์กับมันมากนัก นี่คือสิ่งที่ฉันคิดว่าควรใช้งานได้
UIView ทุกตัวและ UIWindow นี้มีคุณสมบัติsubviews
ซึ่งเป็น NSArray ที่มีมุมมองย่อยทั้งหมด
มุมมองย่อยแรกที่คุณเพิ่มลงในมุมมองจะได้รับดัชนี 0 และดัชนีถัดไป 1 และอื่น ๆ คุณยังสามารถแทนที่addSubview:
ด้วยinsertSubview: atIndex:
หรือinsertSubview:aboveSubview:
และวิธีการดังกล่าวที่สามารถกำหนดตำแหน่งของมุมมองย่อยของคุณในลำดับชั้น
ดังนั้นตรวจสอบรหัสของคุณเพื่อดูว่าคุณเพิ่มมุมมองใดก่อนใน UIWindow ของคุณ นั่นจะเป็น 0 อีกอันจะเป็น 1
ตอนนี้จากมุมมองย่อยรายการหนึ่งของคุณไปยังอีกมุมมองหนึ่งคุณจะต้องทำสิ่งต่อไปนี้:
UIView * theOtherView = [[[self superview] subviews] objectAtIndex: 0];
// or using the properties syntax
UIView * theOtherView = [self.superview.subviews objectAtIndex:0];
แจ้งให้เราทราบหากใช้ได้กับกรณีของคุณ!
(ด้านล่างเครื่องหมายนี้คือคำตอบก่อนหน้าของฉัน):
หากมุมมองจำเป็นต้องสื่อสารกันควรทำผ่านคอนโทรลเลอร์ (นั่นคือใช้โมเดลMVCยอดนิยม)
เมื่อคุณสร้างมุมมองใหม่คุณสามารถตรวจสอบให้แน่ใจว่าได้ลงทะเบียนตัวเองกับคอนโทรลเลอร์
ดังนั้นเทคนิคคือตรวจสอบให้แน่ใจว่ามุมมองของคุณลงทะเบียนกับคอนโทรลเลอร์ (ซึ่งสามารถจัดเก็บตามชื่อหรืออะไรก็ได้ที่คุณต้องการในพจนานุกรมหรืออาร์เรย์) คุณสามารถให้คอนโทรลเลอร์ส่งข้อความถึงคุณหรือคุณสามารถขอข้อมูลอ้างอิงถึงมุมมองและสื่อสารกับตัวควบคุมโดยตรง
หากมุมมองของคุณไม่มีลิงก์กลับคอนโทรลเลอร์ (ซึ่งอาจเป็นเช่นนั้น) คุณสามารถใช้singletonsและ / หรือ class method เพื่ออ้างอิงถึงคอนโทรลเลอร์ของคุณได้