我有UIViewController
,我在其中实例化UIPageViewController
。
有没有办法可以找出用户在父UIViewController
上导航的页面?
示例:如下图所示;每次用户在UIPageViewController
中滑动时,我想在幻灯片编号:X位置显示幻灯片编号。
我可以使用通知来实现此目的,但想知道是否有更好的方法可以做到这一点?
以下是我正在使用的一些示例代码: 在我的XYZViewController类
中override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
generateArrayOfViews() //This would generate a array of view controllers to display within UIPageViewController
let pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("pageViewController") as! UIPageViewController
let firstController = arrayOfViewControllers[locations.count - 1]
let startingViewControllers: Array = [firstController]
pageViewController.dataSource = self
pageViewController.setViewControllers(startingViewControllers, direction: .Forward, animated: true, completion: nil)
pageViewController.view.frame = CGRectMake(0, 139, self.view.frame.width, self.view.frame.height)
self.addChildViewController(pageViewController)
self.view.insertSubview(pageViewController.view, atIndex: 1)
pageViewController.didMoveToParentViewController(self)
}
还实施了以下方法>
presentationCountForPageViewController and
presentationIndexForPageViewController
试着知道我应该在XYZViewController上实现什么来了解pageViewController中的选定视图控制器。
答案 0 :(得分:0)
您可以按如下方式传递可见页面的索引:
ContentViewController *viewController = [self.pageViewController.viewControllers lastObject];
currentIndex = [modelArray indexOfObject:[viewController page]];
答案 1 :(得分:0)
我通常使用这样的标识符创建一个NSArray:
self.pageIdentifiers = @[@"first",@"second"];
每个ViewController我实例化,都会设置一个pageIdentifier属性,具体取决于它在PageViewController中的位置。
然后我可以通过实现这个方法来了解ViewController的索引:
- (NSUInteger)indexOfViewController:(ViewController *)viewController {
// Return the index of the given view controller.
return [self.pageIdentifiers indexOfObject:viewController.pageIdentifier];
}
我也可以在实现这些方法时触发UI事件:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController