【问题标题】:Child View Controller within Parent View Controller父视图控制器中的子视图控制器
【发布时间】:2014-10-26 12:48:10
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c uiviewcontroller xcode6 childviewcontroller


    【解决方案1】:

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

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

    【讨论】:

    • 你能解释一下或者给我它是如何工作的链接吗?
    • 这里是CGRect,上面的代码将一个CGRect框架水平和垂直缩小了一定的值,该值是框架宽度或高度的1/4。请注意,正值会均匀地减小新矩形的大小,以使新矩形居中于旧矩形的中心,而负值会增加大小。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 谢谢 Duncan C,但我没有使用情节提要。
    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2018-08-06
    相关资源
    最近更新 更多