проблема в UIPageControl

#iphone #objective-c #ios #uipagecontrol

#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 
{


}
  

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

Комментарии:

1. iosdevnotes.com/tag/pagecontrol

Ответ №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;
    }
}
  

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

Комментарии:

1. У меня есть две точки, на обеих точках я хочу показать разные контроллеры просмотра, и я не использовал режим прокрутки. как я могу это сделать?

2. Это будет проще ввести в основной ответ, поэтому я собираюсь отредактировать это и поместить туда для удобства