UIPageControl中的问题

时间:2011-05-11 06:34:19

标签: iphone objective-c ios uipagecontrol

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方法?有人可以帮忙吗?

2 个答案:

答案 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动画进行推送和弹出。

如果要显示视图控制器,则需要在视图控制器中显示页面控件,以便用户可以从一个切换到另一个。在这种情况下,您需要在视图中添加页面控件,并在主窗口中添加,以便它在任何地方都可见。