2
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 方法?任何人都可以帮忙吗?

4

2 回答 2

0

您可以显示两个视图,而不是显示两个不同的视图控制器。您可以选择第一个点并显示第一个视图并在屏幕右侧显示下一个视图。当用户点击第二个点时,使 UIView 动画类似于推入 UINavigationController。因此,您可以使用 UIView 动画进行推送和弹出。

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

于 2011-05-11T06:58:15.950 回答
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(我们将称之为控制器视图)占用大部分屏幕,但不覆盖页面控件。

您还需要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;
    }
}

这应该为您解决问题

于 2011-05-11T06:39:55.217 回答