问题是这样的。我有一个 PageViewController 作为我的根视图控制器。使用 PageViewController 类的 ViewDidLoad 块中的 SetViewControllers 初始化第一页是有效的,使用页面的手势识别器来回翻转页面也是如此。此根视图控制器可通过 AppDelegate 在应用程序范围内使用。
我想添加从书中任何地方返回第一页的功能,因此在我的 PageViewController 类中创建了一个公共方法,该方法简单地调用了 SetViewControllers 方法。虽然这似乎有效,但我注意到了某些怪癖。在后台循环播放的音乐(同样,在 AppDelegate 中声明的 AVAudio 对象)将重新启动,并且 ViewDidLoad 块不会触发,直到使用手势识别器再次翻页。
我使用 GetNextViewController 尝试了同样的事情,但这只是为 PageViewController 引用引发了一个空引用异常。我假设我没有掌握的控件之间存在某种关系,可能与 PageViewController 的数据源有关。我尝试将其委托给一个覆盖默认方法的类,以及使用 Mono 的 this.pageViewController.GetNextViewController = delegate(method signature) 语法无济于事。
有人对我的问题有任何见解吗?
编辑:AppDelegate.cs 的代码可以在这里查看:https : //gist.github.com/1747537 和 PageViewController.cs 的代码: https ://gist.github.com/1747559 。