我有两个UIViewController
。一个是 ViewController ,另一个是 GameplayViewController 。
ViewController将执行
let gameplayViewCtrl = GameplayViewController()
self.presentViewController(gameplayViewCtrl, animated: true, completion: nil)
viewDidAppear()
函数中的。所以它显示然后加载另一个UIViewController
。
GameplayViewController有UICollectionView
作为其成员。它扩展/符合UIViewController, UICollectionViewDelegate, UICollectionViewDataSource
。我已经在storyboard中正确地将委托,数据源和UICollectionView变量链接为@IBOutlet。
通过以上设置,我测试了它。它显示白色屏幕一秒钟,然后显示黑屏。 GameplayViewController中UICollectionView
中的单元格永远不会被加载(通过断点检查代码中没有调用)。但是,如果我将入口点(故事板中的箭头)更改为指向GameplayViewController,则它会正确加载并显示单元格中的所有数据。事情很好。
这里有什么问题?我想这是关于永远不会被非默认的UIViewController捕获的事件链。
仅供参考:我在xcode 6 beta 3中这样做
更新
我做了更多的研究,发现至少有两种可能的方法可以做到这一点。一个是我的方法,另一个是使用segue。
Segue有效,你可以找到如何做到How do I use performSegueWithIdentifier: sender:?。我测试了它。
我还测试过从GameplayViewController
切换到ViewController
(与原始测试相反)。它显示类似于第一次测试的黑屏。但它应该显示白色屏幕ViewController
,它有白色背景颜色。这让我觉得内心有些错误。
目前,我使用segue方法。但我仍然想知道为什么self.presentViewController()
不会为我们做这个工作,它会显示黑屏,没有任何调用或发生。