#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:
Вы можете показывать два представления вместо отображения двух разных контроллеров представления. Вы можете оставить первую выбранную точку и показать первый вид, а следующий вид — за пределами экрана, справа от него. Когда пользователь нажимает на вторую точку, создайте анимацию 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. Это будет проще ввести в основной ответ, поэтому я собираюсь отредактировать это и поместить туда для удобства