pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(153,356,38,36) ];
pageControl.userInteractionEnabled =YES;
pageControl.numberOfPages = 2;
pageControl.currentPage = 1;
pageControl.enabled = TRUE;
[pageControl setHighlighted:YES];
[pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:pageControl];
}
- (IBAction) changePage:(id)sender
{
}
我是以编程方式创建页面控件,我想在点击页面控件时显示新的视图控制器。我如何实现这个changePage方法?有人可以帮忙吗?
答案 0 :(得分:0)
编写方法来更改页面的最简单方法如下:
- (IBAction)changePage:(id)sender {
CGrect frame;
frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
编辑:如果您只是想通过点击点来更改视图控制器,则需要设置页面以使主视图底部有一个UIPageControl,另一个UIView(我们将调用此controllerView)它占据了大部分屏幕,但没有覆盖页面控件。
您还需要在头文件中添加PageOne *pageOneController;
和PageTwo *pageTwoController;
。这有助于防止内存泄漏。
因此,当您选择其他页面时,您将调用changePage
方法
- (IBAction)changePage:(id)sender {
if (sender.currentPage == 1) {
// make sure only one instance exists at a time so there aren't any memory leaks;
if (pageOneController != nil) {
pageOneController = nil;
[pageOneController release];
}
// load up page one;
pageOneController = [[PageOne alloc] initWithNibName:@"PageOneNib" bundle:nil];
// set this as the primary view;
controllerView = viewController.view;
} else {
// do the same for your other page;
}
}
这应该是你的伎俩
答案 1 :(得分:0)
您可以显示两个视图,而不是显示两个不同的视图控制器。您可以保持选中第一个点并显示第一个视图,并在屏幕右侧显示下一个视图。当用户点击第二个点时,使UIView动画类似于推入UINavigationController。因此,您可以使用UIView动画进行推送和弹出。
如果要显示视图控制器,则需要在视图控制器中显示页面控件,以便用户可以从一个切换到另一个。在这种情况下,您需要在视图中添加页面控件,并在主窗口中添加,以便它在任何地方都可见。