2015-11-22 27 views
12

elde etmek istiyorum Ne:Erişim konteyner görünüm çocuk özellikleri

Kullanıcı daha sonra viewController içinde düğmeye basan, kırmızı rengini değiştirmek gerekir konteyner görünümünde yerleştirilmiş düğme rengi.

Kapsayıcı görünümünde bulunan düğmenin ViewController'dan nasıl erişebilirim? Adım

enter image description here

cevap

23

Aşama:

  1. adı görünüşüdür kontrol ve kap görünümü denetleyicisi arasındaki segue.
  2. Konteynır denetleyicisini içerecek olan görünüm denetleyicinize bir özellik ekleyin.
  3. Görünüm denetleyicinizde prepareForSegue(_:sender:) yöntemini uygulayın. Eğer konteyner görünüm denetleyici böylece özelliğinde depolamış 2. Şimdi
  4. segue.identifier eğer yöntem kontroller sırasında
  5. 1. adımda
  6. true ise belirtilen tanımlayıcı, daha sonra adım Mülkünüze segue.destinationViewController tasarruf eşittir sınıfınızdan özelleştirme yapabilirsiniz. Görüntü denetleyicisini zaten viewDidLoad() yönteminde depolamanız gerekir.

Örnek:

var containerViewController: YourContainerViewControllerClass? 
let containerSegueName = "testSegue" 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == containerSegueName { 
     containerViewController = segue.destinationViewController as? YourContainerViewControllerClass 
    } 
} 
+0

Detaylı cevabınız için çok teşekkürler, ancak MyButton.backgroundColor = UiColor.blackColor() dosyasını düzenleyebileceğimi nereden söyleyebilirim? ve benim viewcontroller'ımdaki düğmenin eyleminde nasıl bir geçersiz kılma fonksiyonu ekleyeceğim? – Anokrize

+0

'containerViewController.MyButton.backgroundColor..' görünüm denetleyicinizde (kapsayıcı denetleyicisini değil) – sunshinejr

+0

Benim için işe yarayan Yep, ayrıntılı yanıt için çok teşekkürler! – Anokrize

8

Ben segue.identifier güvenmek değil tavsiye ederim, ama doğrudan ziyade testi için destination türü:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    super.prepare(for: segue, sender: sender) 

    if let vc = segue.destination as? YourViewController { 
     vc.someVariable = true 
    } 
} 

bir yanlış yazılmış segue adıyla hatalardan kaçınmak Bu şekilde .

+0

olarak adlandırılır. Bu kabul edilen yanıt olmalıdır. Eğer bir UIContainerView daha varsa ve .identifier yaklaşımını denerseniz başarısız olursunuz: D thanks @andrey – Tom