페이지 컨트롤을 사용하여 여러 viewController 사이를 전환하고 싶습니다. 나는 관련된 nib에 UIScrollView와 UIPageControl이 들어있는 다음과 같은 viewController를 가지고있다. 난 둘 다 컨트롤을 볼 수있는 방법으로 엑스 코드의 IB를 사용하여 페이지 컨트롤 위의 스크롤 뷰를 배치 한, 이것은 .H 파일입니다 있습니다UIScrollView와 결합 할 때 UIPageControl이 표시되지 않음
@interface NewForm : UIViewController <UIScrollViewDelegate>
{
BOOL pageControlUsed;
}
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl;
@property (nonatomic, retain) NSMutableArray *viewControllers;
- (IBAction)changePage:(id)sender;
@end
보기과 있는 ScrollView 콘센트 파일의 소유자뿐만 아니라 스크롤 뷰의 위임에 링크되어 있습니다. pageControl 콘센트 및 changePage은 UIPageControl에 연결됩니다.
이
은 (실제로에만 관련 방법)을하는 .m 파일입니다 : 나는 응용 프로그램을 실행하면@implementation STNewAccountTest
@synthesize scrollView, viewControllers, pageControl;
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableArray *controllers = [[NSMutableArray alloc] init];
[controllers addObject:[[Page1 alloc] initWithNibName:@"Page1" bundle:nil]];
[controllers addObject:[[Page2 alloc] initWithNibName:@"Page2" bundle:nil]];
self.viewControllers = controllers;
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * numberOfPages, scrollView.frame.size.height);
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.scrollsToTop = NO;
scrollView.delegate = self;
self.pageControl.currentPage = 0;
self.pageControl.numberOfPages = numberOfPages;
[self loadScrollViewWithPage:0];
}
- (void)loadScrollViewWithPage:(int)page
{
if ((page < 0) || (page >= numberOfPages))
return;
Page1 *controller1 = nil;
Page2 *controller2 = nil;
if (page == 0) {
controller = [self.viewControllers objectAtIndex:page];
if (controller == nil) {
controller = [[Page1 alloc] initWithNibName:@"Page1" bundle:nil];
[self.viewControllers replaceObjectAtIndex:page withObject:controller];
}
}
if (page == 1) {
controller = [self.viewControllers objectAtIndex:page];
if (controller == nil) {
controller = [[Page2 alloc] initWithNibName:@"Page2" bundle:nil];
[self.viewControllers replaceObjectAtIndex:page withObject:controller];
}
}
if (controller.view.superview == nil)
{
CGRect frame = self.scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[self.scrollView addSubview:controller.view];
}
}
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
if (pageControlUsed)
{
return;
}
// Switch the indicator when more than 50% of the previous/next page is visible
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1;
pageControl.currentPage = page;
// load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
[self loadScrollViewWithPage:page - 1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page + 1];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
pageControlUsed = NO;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
pageControlUsed = NO;
}
- (IBAction)changePage:(id)sender
{
int page = pageControl.currentPage;
// load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
[self loadScrollViewWithPage:page - 1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page + 1];
// update the scroll view to the appropriate page
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
[scrollView scrollRectToVisible:frame animated:YES];
// Set the boolean used when scrolls originate from the UIPageControl
pageControlUsed = YES;
}
, 제가 참조 페이지 '뷰가 전체 화면을 차지, 나는 수 있어요 것입니다 스크롤보기의 페이징 기능을 통해 페이지를 탐색하지만 페이지 컨트롤과 점은 표시되지 않습니다. 나는 무엇을 놓칠 수 있습니까?
감사합니다.