3 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
您應(yīng)該手動(dòng)跟蹤當(dāng)前頁(yè)面。委托方法pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:
將告訴您何時(shí)更新該變量。該方法的最后一個(gè)參數(shù)transitionCompleted:
可以告訴您用戶是否完成了翻頁(yè)過(guò)渡。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
從iOS 6開(kāi)始,我發(fā)現(xiàn)viewControllers
UIPageViewController 的屬性不斷更新,因此它將始終保存一個(gè)代表當(dāng)前頁(yè)面的視圖控制器,而不是其他內(nèi)容。因此,您可以通過(guò)調(diào)用viewControllers[0]
(假設(shè)您一次只顯示一個(gè)視圖控制器)來(lái)訪問(wèn)當(dāng)前頁(yè)面。
只有在頁(yè)面“鎖定”到位時(shí),viewController數(shù)組才會(huì)更新,因此如果用戶決定部分顯示下一頁(yè),則除非他們完成轉(zhuǎn)換,否則它不會(huì)成為“當(dāng)前”頁(yè)面。
如果要跟蹤“頁(yè)碼”,請(qǐng)?jiān)谕ㄟ^(guò)UIPageViewController數(shù)據(jù)源方法創(chuàng)建視圖控制器時(shí)為其分配索引值。
例如:
-(void)autoAdvance { UIViewController *currentVC = self.viewControllers[0]; NSUInteger currentIndex = [myViewControllers indexOfObject:currentVC]; if ( currentIndex >= (myViewControllers.count-1) ) return; [self setViewControllers:@[myViewControllers[ currentIndex+1 ]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil]; }-(NSInteger)presentationIndexForPageViewController: (UIPageViewController *)pageViewController { // return 0; UIViewController *currentVC = self.viewControllers[0]; NSUInteger currentIndex = [myViewControllers indexOfObject:currentVC]; return currentIndex; }
但請(qǐng)注意這是不可靠的評(píng)論。

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
不幸的是,以上所有方法都沒(méi)有幫助我。不過(guò),我通過(guò)使用標(biāo)簽找到了解決方案??赡芩皇亲詈玫?,但它有效,并希望它可以幫助某人:
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed { if (completed) { int currentIndex = ((UIViewController *)self.pageViewController.viewControllers.firstObject).view.tag; self.pageControl.currentPage = currentIndex; }}
在Swift :(感謝@Jessy)
func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool){ guard completed else { return } self.pageControl.currentPage = pageViewController.viewControllers!.first!.view.tag}
示例: gist
- 3 回答
- 0 關(guān)注
- 1211 瀏覽
添加回答
舉報(bào)