[英]How to set text at one page and image at another page in UIPageViewController
[英]How to set first page in UIPageViewController
當用戶在UIPageViewController
的第一頁上並嘗試返回時,我只返回nil。 在iOS 5中,這很好用。 它導致iOS 6崩潰。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The number of view controllers provided (0) doesn't match the number required (1) for the requested transition'
這是我的代碼。 返回contentViewController
而不是nil
,它工作正常。 我該怎么辦而不是nil
?
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController {
contentViewController = [[ContentViewController_iPhone alloc] init];
int currentIndex = [self.modelArray indexOfObject:[(ContentViewController_iPhone *)viewController labelContents]];
if ((currentIndex == 0) || (currentIndex == NSNotFound)) {
//if on the first page, can't go back
return nil;
}
contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex - 1];
return contentViewController;
}
我遇到了同樣的問題,並且發現只有當我將pageviewcontrollers gestureRecognizers的代理更改為我自己的控制器時才會發生這種情況(如果你想在用戶點擊頁面上的某些區域時取消分頁,這通常會發生, 例如按鈕 )。
對我來說,它不能為iOS 6重新分配。這很好,因為iOS處理的觸摸有點不同。 頁面上的按鈕或您自己的手勢識別器在iOS 6下可以正常工作,因為它們具有優先級並會自動取消分頁。
我希望這有幫助。
您需要在代碼中添加以下內容
if (currentIndex == 0 || (index == NSNotFound)) {
//if on the first page, can't go back
return nil;
}
最新版本的基於Xcode頁面的應用程序模板提供以下代碼:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger index = [self indexOfViewController:(DataViewController *)viewController];
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index storyboard:viewController.storyboard];
}
這應該夠了吧 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.