Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 父视图控制器中的子视图控制器_Ios_Objective C_Uiviewcontroller_Xcode6_Childviewcontroller - Fatal编程技术网

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

Ios 父视图控制器中的子视图控制器,ios,objective-c,uiviewcontroller,xcode6,childviewcontroller,Ios,Objective C,Uiviewcontroller,Xcode6,Childviewcontroller,我正在制作一个应用程序,其中我只想在父视图控制器中显示子视图控制器,即仅在父视图控制器的3/4部分中显示。我已经实现了以下代码,但是子视图控制器正在填充整个父视图控制器 我的代码是: - (CardsChildViewController *)viewControllerAtIndex:(NSUInteger)index { CardsChildViewController *childViewController = [[CardsChildViewController alloc]

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

}

我是通过以下帮助实现的:

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

CGRect frame = self.view.frame;

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

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

设置子视图控制器的最简单方法是在情节提要中放置容器视图,使子视图控制器成为一个单独的场景,并控制将嵌入片段从容器视图拖动到要成为子视图的视图控制器

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


如果做不到这一点,您可以调整页面视图控制器视图的框架,然后再将其添加为子视图,正如@ErAdhish所建议的那样。但是为了将家务管理信息从家长转发给孩子,你需要做大量的设置。

谢谢Duncan C,但我没有使用故事板。你能解释一下或者给我一个链接,它到底是如何工作的吗?下面是,上面的代码在水平和垂直方向上将CGRect框架缩小了一定的值,该值为帧宽度或高度的1/4。请注意,正值将使新矩形在旧矩形中居中的大小均匀减小,而负值将增大大小。非常感谢您的夸夸其谈。