2016-04-26 96 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

相关问题