我有两个 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()
不会为我们做这个工作,它显示黑屏,没有任何召唤或发生 .