2016-03-22 29 views
1

ben üzerinden bir ucu dosyasını başka ViewController çağıran bir rootViewController var:Nib/XIb'nin Şu anda nesne yaşam döngüsü

self.popViewController = PopViewController(nibName: "PopUpViewController_iPhone6Plus", bundle: bundle) 

bu init olduğunda: rootViewController PopViewController başlatır

override public init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) { 
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
} 

sonra getiriyor aracılığıyla yukarı: showInView

self.popViewController.showInView(self, animated: true) 

olduğunu

nerede:

func showInView(myRootViewController : MyRootViewController!, animated: Bool) 
{ 
    self.myRootViewController = myRootViewController 
    myRootViewController.view.addSubview(self.view) 
    myTextField.delegate = self 

    if animated 
    { 
     self.showAnimate() 
    } 
} 

myTextField, PopViewController için bir IBOutlet öğesidir. myRootViewController.view.addSubview(self.view)'dan önce myTextField.delegate = self'u koyarsam bir hata alıyorum: fatal error: unexpectedly found nil while unwrapping an Optional value, ancak sonradan koyarsam her şeyin yolunda olduğunu anladım.

Ben Nib files için documentations baktık ve sorum şu:

Ben IBOutlets kalem ucu yıllardan önce bağlı alamadım çünkü myRootViewController.view.addSubview(self.view) önce myTextField.delegate = self koymak hata alıyorum sebebi var mı görünüm gösterilir?

Ayrıca: aracılığıyla ucunu yükleme yapar Neden: hemen yüklemez ELVES ile bir görünüm denetleyicisi Init'ing

'NSUnknownKeyException', reason: '[<DeckWheel.PopUpAddDeckViewControllerSwift 0x10026cbe0> setValue:forUndefinedKey:]

cevap

1

: self.popViewController = NSBundle.mainBundle().loadNibNamed("PopViewController_iPhone6", owner: PopViewControllerSwift.self, options: nil).first as! PopViewControllerSwift

bir hata atmak. Görünüm denetleyicisinin view sorgulanana kadar NIB aslında yüklenmez. the docs for UIViewController's init(nibName:bundle:) method itibaren

: ELVES yüklenene kadar

Elbette

The nib file you specify is not loaded right away. It is loaded the first time the view controller’s view is accessed. If you want to perform additional initialization after the nib file is loaded, override the viewDidLoad method and perform your tasks there.

, ELVES kurmak çıkış bağlantıları bağlanamaz. Yani, view'u sorgulayana kadar, çıkışlarınız nil.

+0

Ancak ikinci soru için, görünüm erişildikten sonra textField temsilcisini ayarlamam olsa bile, – YellowPillow

+0

anahtar değeri hatasını atar. "Owner" parametresine gönderdiğiniz nesne, IBOutlet'leri kancalamaya çalıştığı şeydir. için. – dan

+0

@YellowPillow, "ikinci soru için" herhangi bir özellik için bir özellik olmayan sınıfın bir örneğinin yerine gerçek sınıfı gönderiyorsunuz, "bir ikinci soru" oluşturmalısınız. Dan buna cevap verse de, yukarıda. –

İlgili konular