UI araç setini kullanarak hiçbir zaman eksiksiz bir kullanıcı arayüzü oluşturmadım, bu yüzden bu konuda fazla deneyimim yok. İşte yine de çalışması gerektiğini düşündüğüm şey.
Her UIView ve bu UIWindow, subviews
tüm alt görünümleri içeren bir NSArray olan bir özelliğe sahiptir .
Bir görünüme eklediğiniz ilk alt görünüm, 0 dizinini ve sonraki dizin 1'i vb. Alacaktır. Ayrıca değiştirebilir addSubview:
ile insertSubview: atIndex:
veyainsertSubview:aboveSubview:
hiyerarşisinde subview konumunu belirleyebilir gibi yöntemlere ve.
Bu nedenle, UIWindow'unuza ilk olarak hangi görünümü eklediğinizi görmek için kodunuzu kontrol edin. Bu 0, diğeri 1 olacak.
Şimdi, alt görünümlerinizden birinden diğerine ulaşmak için aşağıdakileri yaparsınız:
UIView * theOtherView = [[[self superview] subviews] objectAtIndex: 0];
// or using the properties syntax
UIView * theOtherView = [self.superview.subviews objectAtIndex:0];
Bunun sizin durumunuz için işe yarayıp yaramadığını bana bildirin!
(bu işaretin altında önceki cevabım var):
Görünümlerin birbirleriyle iletişim kurması gerekiyorsa, bunu bir denetleyici aracılığıyla (yani popüler MVC modelini kullanarak ) yapmaları gerekir .
Yeni bir görünüm oluşturduğunuzda, kendisini bir denetleyiciye kaydettirdiğinden emin olabilirsiniz.
Dolayısıyla teknik, görünümlerinizin bir denetleyiciye kaydedildiğinden emin olmaktır (bu, onları ada göre veya bir Sözlük veya Dizide tercih ettiğiniz her şeyi saklayabilir). Ya kontrolörün sizin için bir mesaj göndermesini sağlayabilirsiniz ya da görünüme bir referans alıp doğrudan onunla iletişim kurabilirsiniz.
Görünümünüzde denetleyiciye bir bağlantı yoksa (durum böyle olabilir) , denetleyicinize bir referans almak için tekli ve / veya sınıf yöntemlerinden yararlanabilirsiniz.