проблема в UIPageControl - PullRequest
       21

проблема в UIPageControl

2 голосов
/ 11 мая 2011
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 голосов
/ 11 мая 2011

Вы можете показать два вида вместо того, чтобы показывать два разных контроллера вида. Вы можете оставить первую выбранную точку и показать первый вид и иметь следующий вид вне экрана, справа. Когда пользователь нажимает вторую точку, сделайте анимацию UIView похожей на нажатие в UINavigationController. Таким образом, вы делаете push и pop с анимацией UIView.

Если вы хотите отображать контроллеры представления, тогда элемент управления страницей должен отображаться в обоих контроллерах представления, чтобы пользователь мог переключаться с одного на другой. В таком случае вам нужно иметь элемент управления страницы в виде, добавленный в главное окно, чтобы он был виден везде.

0 голосов
/ 11 мая 2011

Самый простой способ запрограммировать метод изменения страниц был бы следующим:

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

Это должно помочь вам

...