2016-04-26 99 views
0

我有一個視圖控制器A,它在故事板中有一個xib。 後來我繼承B,從A.Swift視圖控制器初始化程序問題

現在我想提出B.

的視圖控制器

如果我這樣做

self.presentViewaController(B.init(), animated: true) 

它的實際工作,但不加載廈門國際銀行。 該應用程序會崩潰,說收集視圖爲零。 比方說,廈門國際銀行擁有的CollectionView,並在A級:

class A: UIViewController { 
    @IBOutlet weak var collectionView: UICollectionView! 
} 

class B: A { 
    //Should be empty right? since it inherits from A, 
    // but the collectionView from super class is not initialized. 
} 

如何解決這個問題,所以,當我實例B,我可以有初始化的CollectionView?

回答

1

您應該實例,並保留引用到ViewController像這樣:

var viewController = someViewController(nibName: "SomeViewController", bundle: nil) 

然後提出像這樣:

self.presentViewController(viewController, animated: true) 

當然你也可以簡單地現在的這個樣子的,但它是噁心

self.presentViewController(someViewController(nibName: "SomeViewController", bundle: nil), animated: true) 

您可能會或可能不會需要保持跟蹤你的ViewControllers,但它會導致靈活性的路線。

此外,你應該檢查出委託模式的範例,重要的是提出一個子ViewController的同一個ViewController,也會解散這個孩子。而不是另一種選擇,孩子的「自我毀滅」。

+0

我試過了。它說「加載了」XXViewController「筆尖,但未設置視圖插口。」不知道爲什麼它在Swift中如此嚴格。有任何想法嗎? – BabyShung

+0

由於子類沒有xib,這是outlet沒有設置的原因嗎? – BabyShung

+0

@BabyShung確保筆尖插口設置正確,特別是視圖。 – Woodstock

相關問題