UIPageViewController
을 구현하려고합니다. 나는 4 개의 분리 된 viewController를 생성하여 스토리 보드에 추가했다. 이제 UIPageViewController
으로 스크롤하고 싶습니다. 이것이 내가 코드에서하는 일입니다. PageviewController는 항상 2147483648과 같은 색인을 반환합니다.
UIPageViewController
의
self.modelArray = [[NSMutableArray alloc] init];
NSMutableArray *pageData = [[NSMutableArray alloc]init];
ViewOneViewController *viewOne = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"];
ViewTwoViewController *viewTwo = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewTwo"];
ViewThreeViewController *viewThree = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewThree"];
ViewFourViewController *viewFour = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewFour"];
[pageData addObject:viewOne];
[pageData addObject:viewTwo];
[pageData addObject:viewThree];
[pageData addObject:viewFour];
self.modelArray = pageData;
다음 설치 기본 및 초기 VC 설정 :이 내 delegate
방법 (있는 마지막
ViewOneViewController *cVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"];
NSArray *viewControllers = [NSArray arrayWithObject:cVC];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
// Add the pageViewController as the childViewController
[self addChildViewController:self.pageViewController];
// Add the view of pageViewController to the currentView
[self.view addSubview:self.pageViewController.view];
// Call didMoveToParentViewController: of the childViewController, the UIPageViewController instance in our case.
[self.pageViewController didMoveToParentViewController:self];
// Assign the gestureRecognizers property of the pageViewController to the view's gestureRecognizers property
self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
을 예를 들면, 다음 VC를위한 방법)
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [self.modelArray indexOfObject:viewController];
if(currentIndex == self.modelArray.count - 1)
return nil;
UIViewController *cVC = [self.modelArray objectAtIndex:currentIndex + 1];
return cVC;
}
Bu 내가 빌드하고 실행할 때 다음 오류가 발생합니다.
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 2147483648 beyond bounds [0 .. 3]'
아무도 도움이 될 수 있습니까?
종류에 관해서 .. 편집 여기
thread #1: tid = 0x2403, 0x37776350 libsystem_kernel.dylib`__pthread_kill + 8, stop reason = signal SIGABRT
frame #0: 0x37776350 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x33115122 libsystem_c.dylib`pthread_kill + 58
frame #2: 0x33151972 libsystem_c.dylib`abort + 94
frame #3: 0x36f2fd4e libc++abi.dylib`abort_message + 74
frame #4: 0x36f2cff8 libc++abi.dylib`default_terminate() + 24
frame #5: 0x3165ba76 libobjc.A.dylib`_objc_terminate() + 146
frame #6: 0x36f2d07a libc++abi.dylib`safe_handler_caller(void (*)()) + 78
frame #7: 0x36f2d114 libc++abi.dylib`std::terminate() + 20
frame #8: 0x36f2e598 libc++abi.dylib`__cxa_rethrow + 88
frame #9: 0x3165b9d0 libobjc.A.dylib`objc_exception_rethrow + 12
frame #10: 0x38c82f20 CoreFoundation`CFRunLoopRunSpecific + 456
frame #11: 0x38c82d48 CoreFoundation`CFRunLoopRunInMode + 104
frame #12: 0x34bbc2ea GraphicsServices`GSEventRunModal + 74
frame #13: 0x35c14300 UIKit`UIApplicationMain + 1120
frame #14: 0x0005050c Franke2`main(argc=1, argv=0x2fdb1d20) + 116 at main.m:16
frame #15: 0x340ccb20 libdyld.dylib`start + 4
스택 추적을 제공하십시오. – trojanfoe
@trojanfoe stackTrace의 의미는 무엇입니까? 오류를 추가했습니다. – Steaphann
크래시가 발생하고 앱이 Xcode에서 멈춘 경우 디버거 콘솔에 'bt'를 입력하고 생성 된 내용을 [질문과 함께 게시]합니다. – trojanfoe