我有两个 UIViewController . 一个是ViewController,另一个是GameplayViewController .

ViewController将执行

let gameplayViewCtrl = GameplayViewController() self.presentViewController(gameplayViewCtrl, animated: true, completion: nil)

viewDidAppear() 函数中 . 所以它显示然后加载另一个 UIViewController .

GameplayViewController有 UICollectionView 作为其成员 . 它扩展/符合 UIViewController, UICollectionViewDelegate, UICollectionViewDataSource . 我在storyboard中正确地将delegate,datasource和UICollectionView变量链接为@IBOutlet .

通过以上设置,我测试了它 . 它显示白色屏幕一秒钟,然后显示黑屏 . GameplayViewController中 UICollectionView 中的单元格永远不会被加载(通过断点检查代码中没有调用) . 但是,如果我将入口点(故事板中的箭头)更改为指向GameplayViewController,则它会正确加载并显示单元格中的所有数据 . 事情很好 .

这有什么问题?我想这是关于永远不会被非默认的UIViewController捕获的事件链 .

仅供参考:我在xcode 6 beta 3中这样做

Updated

我做了一些研究,发现至少有两种可能的方法可以做到这一点 . 一个是我的方法,另一个是使用segue .

Segue有效,你可以找到怎么做How do I use performSegueWithIdentifier: sender:? . 我测试了它 .

我还测试了从 GameplayViewController 切换到 ViewController (与我原来的测试相反) . 它显示类似于第一次测试的黑屏 . 但它应该显示白色屏幕 ViewController ,它有白色背景颜色 . 这让我觉得内心有些错误 .

现在,我使用segue方法 . 但是我仍然想知道为什么 self.presentViewController() 不会为我们做这个工作,它显示黑屏,没有任何召唤或发生 .