스크롤 뷰와 페이지 컨트롤이 구현 된 VC가 있습니다. 그것은 3 개의 페이지를 가지고있다. 그것은 모두 정확하게 셋업되고 잘 작동한다. 내가 할 수 있기를 원하는 것은 사용자가 누르는 버튼에 따라 VC가 다른 페이지에로드되도록하는 것입니다.특정 페이지에 UIScrollView + UIPageControl이있는 ViewController 푸시
방법에서께 버튼 I는 (페이지의 하단에있는 기포에 의해 입증되는 바와 같이) VC가로드가 정확한 페이지에로드
ViewController *vc = [[ViewController alloc] init];
vc.pageControl.currentPage = 2;
[self.navigationController pushViewController:vc animated:YES];
를 호출하지만 정보를 표시 페이지 [0]에서. 스크롤을 시작하면, 내가하는 일과 상관없이 페이지 [0]으로 돌아갑니다.
가장 좋은 추측은 어떤 페이지를 표시하고 싶은지에 따라 특정 x 원본으로 VC로드를 만들어야하지만 내 것과 관련이없는 항목을 찾을 수 없었기 때문에 매우 분실했습니다. .
감사합니다.
편집 : 다음은 VC 클래스의 코드입니다. 나는이 글을 쓰지 않았고 PageControl로 작업 한 것은 처음이므로, 내가 배우면서 배우려고 노력하고있다.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.scrollView = [[UIScrollView alloc] init];
self.scrollView.pagingEnabled = TRUE;
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.delegate = self;
firstPage = [[UIView alloc] init];
firstPage.tag = 0;
secondPage = [[UIView alloc] init];
secondPage.tag = 1;
thirdPage = [[UIView alloc] init];
thirdPage.tag = 2;
pages = [[NSArray alloc] initWithObjects:firstPage, secondPage, thirdPage, nil];
// Page Control
self.pageControl = [[UIPageControl alloc] init];
self.pageControl.numberOfPages = 3;
self.pageControl.currentPage = 0;
[self.view addSubview:self.scrollView];
[self.view addSubview:self.pageControl];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// First Page Setup
//
[self setupFirstPage];
// Second Page Setup
//
[self setupSecondPage];
// Third Page Setup
//
[self setupThirdPage];
// Frame everything
//
CGRect screenFrame = [[UIScreen mainScreen] applicationFrame];
CGRect navBarFrame = self.navigationController.navigationBar.frame;
self.scrollView.frame = CGRectMake(0, navBarFrame.size.height, 320, screenFrame.size.height - navBarFrame.size.height);
self.pageControl.frame = CGRectMake(0, screenFrame.size.height - 70, 320, 20);
firstPage.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
secondPage.frame = CGRectMake(320 * secondPage.tag, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
thirdPage.frame = CGRectMake(320 * thirdPage.tag, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
// Add Subviews
//
[self.scrollView addSubview:firstPage];
[self.scrollView addSubview:secondPage];
[self.scrollView addSubview:thirdPage];
self.scrollView.contentSize = CGSizeMake(320 * pages.count, self.scrollView.frame.size.height);
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1;
self.pageControl.currentPage = page;
}
문제는 당신의'ViewController' 코드 어딘가에입니다. 'currentPage' setter를 오버라이드 (override) 할 필요가있어, 초기화에 의해 갱신되지 않는 것을 갱신 할 필요가 있습니다. 코드를 더 게시하면 도움이 될 수 있습니다. – Dima
VC 클래스에서 코드를 추가했습니다. 임의의 이름을 사물에 사용했지만 setupFirstPage/SecondPage/ThirdPage는 모두 동일한 기능을 가지고 있습니다. 레이블을 생성하고 원하는 곳에 배치합니다. 나는 - (void) setPosition 함수가 구현되었지만 코드가 추가되지 않아 위치를 변경하려고 계획했던 곳에서 가능할 수 있음을 알 수 있습니까? – TheJer