1

我有一个 mainUIViewController并命名为AddInformationController. 在这mainViewController我有两个UIContainerView. 他们每个人都嵌入了一个UITableViewController. 表视图控制器被命名为InformationSegmentControllerResultSegmentController

我把这个放在AddInformationController

InformationSegmentController *isc = [self.storyboard instantiateViewControllerWithIdentfier:@"InformationSegmentController"];
ResultSegmentController *rsc = [self.storyboard instantiateViewControllerWithIdentifier: @"ResultSegmentController"];
[self addChildViewController: isc];
[self addChildViewController: rsc];

InformationSegmentController课堂或ResultSegmentController课堂上,我试图记录这个: NSLog(@"%@",self.parentViewController); 但不幸的是,它是零。如何正确获取 parentViewController?我必须使用prepareForSegue吗?

// 问题更新:

addChildViewController我发现如果我直接在我的故事板中创建这些 childViewControllers ,我不必再次调用方法。

我试图NSLog(@"%@", self.childViewControllers)在我AddInformationController的结果中包含InformationSegmentController类和ResultSegmentController类。

但问题是当我调用NSLog(@"%@", self.parentViewController)两个 childViewContorllers 时viewDidLoad,结果为零。

4

2 回答 2

1

你必须像这样尝试

//add childview
    [self addChildViewController:aVC];
    [self.view addSubview:aVC.view];
    [aVC didMoveToParentViewController:self];

    //remove
    [self removeFromParentViewController];
    [self didMoveToParentViewController:nil];
    [self.view removeFromSuperview];

希望对您有所帮助。

或者
另一种进入方式PerentViewControllerChildViewControlerMake @property (strong, nonatomic) AddInformationController *ParentVC;in Your并从您的Like中ChildViewController.h分配viewControllerParentViewController

InformationSegmentController *isc = [self.storyboard instantiateViewControllerWithIdentfier:@"InformationSegmentController"];
isc.ParentVC = self;
[self addChildViewController: isc];
于 2016-03-31T04:40:41.997 回答
0

为容器视图的两个 segue 提供标识符(即,假设 "InformationSegmentControllerSegue" 和 "ResultSegmentControllerSegue" )并在 AddInformationController 中使用 prepareForSegue ,如下所示:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([[segue identifier] isEqualToString:@"InformationSegmentControllerSegue"]) {
            InformationSegmentController *container1 = segue.destinationViewController;
        }
else if([[segue identifier] isEqualToString:@"ResultSegmentControllerSegue"]) {
            ResultSegmentController *container2 = segue.destinationViewController;
        }
    }

希望这对您有所帮助。

于 2016-03-31T05:18:02.970 回答