UIPageControl загружает новый вид или другой контроллер - PullRequest
4 голосов
/ 07 декабря 2011

Я только что "попытался" просмотреть учебник по яблокам в PageControl.Теперь я должен указать, что я не полностью понял это, это казалось сложным, поэтому я прошу прощения, если этот вопрос очень очевиден.

Я заметил, что яблоко загрузило свой контент из .plist.Теперь все будет хорошо и просто, если все, что у вас есть, - это один UILabel и UIImageView, но что, если я хочу сделать что-то более сложное?Что если я хочу, чтобы на каждой «странице» было около 14 различных переменных, кнопка на каждой «странице», которая делает что-то еще в зависимости от того, на какой странице вы находитесь ...

Так что мой вопрос такой (возможно, этобыло бы неразумно делать в первую очередь): есть ли какой-то способ его кодирования, чтобы, когда пользователь переключал страницу, он загружал другой контроллер, имеющий собственный файл .Xib и представление, уже созданное в конструкторе интерфейса?

Спасибо

1 Ответ

1 голос
/ 17 октября 2013

Да, есть.Вы бы использовали UIPageViewControllerUIPageViewController есть методы источника данных и делегата, которые вызываются в зависимости от того, пользователь проводит пальцем влево или вправо.В основном он говорит: «Эй, дай мне UIViewController, который я должен отобразить до или после этого UIViewController.»

Вот пример:

MyPageViewController.h :

@interface MyPageViewController : UIPageViewController <UIPageViewControllerDataSource, UIPageViewControllerDelegate>

@end

MyPageViewController.m :

#import "MyPageViewController.h"

@implementation MyPageViewController 

- (id)init
{
    self = [self initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                   navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                 options:nil];

    if (self) {
        self.dataSource = self;
        self.delegate = self;
        self.title = @"Some title";

        // set the initial view controller
        [self setViewControllers:@[[[SomeViewController alloc] init]]
                       direction:UIPageViewControllerNavigationDirectionForward
                        animated:NO
                      completion:NULL];
    }

    return self;
}

#pragma mark - UIPageViewController DataSource methods
- (UIViewController *)pageViewController:(UIPageViewController *)pvc
      viewControllerBeforeViewController:(UIViewController *)vc
{
    // here you put some logic to determine which view controller to return.
    // You either init the view controller here or return one that you are holding on to
    // in a variable or array or something.
    // When you are "at the end", return nil

    return nil;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pvc
       viewControllerAfterViewController:(UIViewController *)vc
{
    // here you put some logic to determine which view controller to return.
    // You either init the view controller here or return one that you are holding on to
    // in a variable or array or something.
    // When you are "at the end", return nil

    return nil;
}

@end

Вот и все!

...