2015-09-13 20 views
14

Ich habe eine .xib-Datei und möchte eine Containeransicht hinzufügen (um sie in einem ViewController zu platzieren). Leider ist eine Containeransicht nur für das Storyboard verfügbar. Aber wenn ich eine .xib-Datei erstelle und nach dem Container-View-Controller suche, finde ich ihn nicht. Kann mir jemand Tipps geben, wie ich meine Aufgabe erfüllen kann?Hinzufügen einer ContainerView in einem UIViewController, der aus .xib erstellt wurde

+0

es nicht möglich ist, wie es braucht, um Deal mit Eltern und Kind Ansicht Beziehung, die nicht für Xib –

Antwort

19

Wenn Sie eine xib anstelle eines storyboard verwenden, können Sie nur eine einfache UIView zum xib hinzufügen, um Container zu handeln. Fügen Sie anschließend in Code die view Ihres childViewControllers als Unteransicht des Containers hinzu. Hier habe ich die entsprechenden Kind-View-Controller Methoden gefolgt und Layoutbeschränkungen hinzugefügt, um seinen Rahmen Updates mit dem Rahmen des Behälters zu gewährleisten:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIViewController *childViewController = ...; // create your child view controller 

    [self addChildViewController:childViewController]; 
    [self.containerView addSubview:childViewController.view]; 
    [childViewController didMoveToParentViewController:self]; 

    NSArray *horzConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[childView]|" 
                    options:0 
                    metrics:nil 
                    views:@{@"childView" : childViewController.view}]; 

    NSArray *vertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[childView]|" 
                    options:0 
                    metrics:nil 
                    views:@{@"childView" : childViewController.view}]; 

    [self.view addConstraints:horzConstraints]; 
    [self.view addConstraints:vertConstraints]; 

    childViewController.view.translatesAutoresizingMaskIntoConstraints = NO; 
} 
+0

Vielen Dank ist. Es klappt. –

+0

Awesome, ich würde 10 mal upvote wenn ich könnte. –

+1

Fehler wird angezeigt *** Beenden der App aufgrund der nicht abgefangenen Ausnahme "NSInvalidArgumentException", Grund: "Constraint-Format kann nicht analysiert werden: Kann '|' nicht interpretieren" character, weil die zugehörige View keine Superview H: | [childView] | ^ ' –

1

prüft diesen:

SelectDateViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"selectDateVCID"]; 
[self addChildViewController:vc]; 
[vc.view setFrame:CGRectMake(0.0f, 0.0f, self.selectDateContainerView.frame.size.width, self.selectDateContainerView.frame.size.height)]; 
[self.selectDateContainerView addSubview:vc.view]; 
[vc didMoveToParentViewController:self];