父视图控制器中的子视图控制器

时间:2014-10-26 12:48:10

标签: ios objective-c uiviewcontroller xcode6 childviewcontroller

我正在创建一个应用程序,我只想在父视图控制器中显示子视图控制器,即仅在父视图控制器的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/

2 个答案:

答案 0 :(得分:0)

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

CGRect frame = self.view.frame;

CGRect insetFrame = CGRectInset(frame, frame.size.width * 1/8, frame.size.height * 1/8);

答案 1 :(得分:0)

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

设置子视图控制器的最简单方法是在故事板中放置容器视图,使子视图控制器成为一个单独的场景,然后控制 - 将嵌入segue从容器视图拖动到所需的视图控制器做个孩子。

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

如果失败,您可以在将其作为子视图添加之前调整页面视图控制器视图的框架,如@ErAdhish所示。但是你需要做一些设置才能将家政信息从父母转发给孩子。