0

我正在制作一个应用程序,我只想在父视图控制器中显示子视图控制器,即仅在父视图控制器的 3/4 部分。我已经实现了以下代码,但子视图控制器正在填充整个父视图控制器。

我的代码是:

- (CardsChildViewController *)viewControllerAtIndex:(NSUInteger)index {

    CardsChildViewController *childViewController = [[CardsChildViewController alloc]     initWithNibName:@"CardsChildViewController" bundle:nil];
childViewController.index = index;



    return childViewController;

}

在 viewDidLoad 函数上我正在写:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    self.pageController = [[UIPageViewController alloc]         initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll     navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];

    self.pageController.dataSource = self;
    [[self.pageController view] setFrame:[[self view] bounds]];

    CardsChildViewController *initialViewController = [self viewControllerAtIndex:0];


    NSArray *viewControllers = [NSArray arrayWithObject:initialViewController];

    [self.pageController setViewControllers:viewControllers     direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    [self addChildViewController:self.pageController];
    [[self view] addSubview:[self.pageController view]];
    [self.pageController didMoveToParentViewController:self];

}

我通过以下方式的帮助做到了这一点:http: //www.appcoda.com/uipageviewcontroller-tutorial-intro/

4

2 回答 2

0

尝试将 pageController 的框架更改为以下内容。

CGRect frame = self.view.frame;

CGRect insetFrame = CGRectInset(frame, frame.size.width * 1/8, frame.size.height * 1/8);
于 2014-10-26T13:00:55.800 回答
0

您的页面视图控制器是孩子,而不是您使用 viewControllerAtIndex 方法创建的视图控制器。

设置子视图控制器的最简单方法是在情节提要中放置一个容器视图,使子视图控制器成为一个单独的场景,然后将嵌入 segue 从容器视图控制拖动到您想要成为的视图控制器孩子。

当您这样做时,编译器会完成所有工作以设置连接以正确管理子项。您的父视图控制器的 prepareForSegue 方法将在首次加载视图并安装子视图时触发。此时,您可以连接任何插座、委托连接或您可能需要的任何其他东西。

如果做不到这一点,您可以调整页面视图控制器视图的框架,然后再将其添加为子视图,正如@ErAdhish 建议的那样。但是你需要做很多设置才能将家务消息从父母转发给孩子。

于 2014-10-26T13:45:59.363 回答