【问题标题】:problem in UIPageControlUIPageControl 中的问题
【发布时间】:2011-08-23 01:01:51
【问题描述】:
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 方法?有人可以帮忙吗?

【问题讨论】:

标签: iphone objective-c ios uipagecontrol


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    编写更改页面方法的最简单方法如下:

    - (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;
        }
    }
    

    这应该对你有用

    【讨论】:

    • 我有两个点,在这两个点上我想显示不同的视图控制器并且我没有使用滚动视图。我该怎么做?
    • 在主要答案中输入它会更容易,所以我将对其进行编辑并将其放在那里以方便
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多