问题是这个。我有一个PageViewController作为我的根视图控制器。使用PageViewController类的ViewDidLoad块中的SetViewControllers初始化第一页,以及使用页面的手势识别器来回翻页。此根视图控制器可通过AppDelegate在应用程序范围内使用。
我想添加从书中的任何位置返回第一页的功能,因此在我的PageViewController类中创建了一个简单调用SetViewControllers方法的公共方法。虽然这似乎有效,但我注意到了某些怪癖。重新启动在后台循环的音乐(同样,在AppDelegate中声明的AVAudio对象),并且在使用手势识别器再次转动页面之前,ViewDidLoad块不会触发。
我尝试使用GetNextViewController做同样的事情但是它只是为PageViewController引用抛出一个空引用异常。我假设我不掌握的控件之间存在一些关系,可能与PageViewController的DataSource有关。我已经尝试将此委托给一个覆盖默认方法的类,以及使用Mono的this.pageViewController.GetNextViewController =委托(方法签名)语法无济于事。
有没有人对我的问题有什么见解?
编辑:AppDelegate.cs的代码可以在这里查看:https://gist.github.com/1747537和PageViewController.cs:https://gist.github.com/1747559。
答案 0 :(得分:0)
我可以在您的代码中看到几个问题:
PageViewController
已经是您应用中的根控制器,无需在任何地方拨打AddSubview()
。UIViewController
继承然后封装一个UIPageViewController
。你应该继承UIPageViewController
或者根本没有继承(如果它是真的,因为Dimitri说{{1}不适用于子类化。UIPageViewController
可能是AppDelegate的一种方法,而不是您的子类ReturnToFrontPage()
。简而言之:在你的情况下不要继承任何东西。使用普通的UIPageViewController并使UIPageViewController
成为AppDelegate的一种方法,然后它应该都是在公园散步。