Ich habe eine Haupt UIViewController
und benannte AddInformationController
. In diesem mainViewController
habe ich zwei UIContainerView
. Jeder von ihnen eingebettet mit einem UITableViewController
. Die Tabellenansicht-Controller heißen InformationSegmentController
und ResultSegmentController
.Wie bekomme ich den parentViewController in childViewController?
Ich habe dies in AddInformationController
:
InformationSegmentController *isc = [self.storyboard instantiateViewControllerWithIdentfier:@"InformationSegmentController"];
ResultSegmentController *rsc = [self.storyboard instantiateViewControllerWithIdentifier: @"ResultSegmentController"];
[self addChildViewController: isc];
[self addChildViewController: rsc];
In jedem der InformationSegmentController
Klasse oder ResultSegmentController
Klasse, habe ich versucht, dies Protokoll: NSLog(@"%@",self.parentViewController);
Aber leider ist es eine Null. Wie kann ich den ParentViewController richtig erhalten? Muss ich die prepareForSegue
verwenden?
// Frage Update:
fand ich, dass ich wieder addChildViewController
Methode nicht aufrufen, wenn ich diese childViewControllers direkt in mein Drehbuch erstellen.
Ich habe versucht, NSLog(@"%@", self.childViewControllers)
in meinem AddInformationController
und das Ergebnis enthält InformationSegmentController
Klasse und ResultSegmentController
Klasse.
Aber das Problem ist, wenn ich NSLog(@"%@", self.parentViewController)
auf beiden childViewContorlers in viewDidLoad
aufrufen, ist das Ergebnis Null.
Offensichtlich hängt alles davon ab, _when_ Sie das Protokollieren und _who_ ist "selbst". Vielleicht ist das "Selbst" hier nicht dasselbe, das Sie als Kind hinzugefügt haben. – matt
Ich habe die 'NSLog (@"% @ ", self.parentViewController)' in der 'viewDidLoad' Methode in der InformationSegmentController Klasse –
Jetzt verstehe ich. Der ViewDidLoad des childViewControllers ruft früher als der parentViewController auf. Also NSLog ich es wahrscheinlich bevor der parentViewController sogar den childViewController hinzufügt. –