prepareForSegue und Delegierten
Ich habe eine Anwendung mit zwei leitet über. In einem der leitet über, die aktuellen view-controller wird ein Delegierter, der andere aber nicht.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"MoreOptions"]) {
UINavigationController *navigationController = segue.destinationViewController;
MoreOptionsViewController *controller = (MoreOptionsViewController *)navigationController.topViewController;
controller.delegate = self;
} else if ([segue.identifier isEqualToString:@"FullStoryView"]) {
SingleStoryViewController *detailViewController = segue.destinationViewController;
detailViewController.urlObject = sender;
}
}
All dies ist in Ordnung, aber ich möchte, um zu versuchen und zu verstehen, den code besser. Was ich nicht verstehe, ist, dass ich auf einen Verweis auf die MoreOptionsViewController greifen von navigationController.topViewController eher, als dass er einfach von segue.destinationViewController wie ich in der zweiten if-Bedingung. Ist es, weil ich werde die aktuelle view-controller (selbst) als Delegierter? Nochmal, ich versuche nicht, ein problem zu lösen, nur versuchen, besser zu verstehen, was Los ist.
InformationsquelleAutor Sonny Parlin | 2011-12-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf das storyboard, und es sollte klar sein, warum dies der Fall ist. Sie haben embedded -
MoreOptionsViewController
imUINavigationController
angeschlossen und ein Wechsel in den navigation-controller, so dass es dendestinationViewController
. Das ist ziemlich Häufig.InformationsquelleAutor Mark Adams
Den Delegierten weitgehend irrelevant ist im Zusammenhang mit Ihrer Frage.
Ihre erste segue Ziel ist eine Navigations-controller, enthält der view-controller Sie sind wirklich interessiert. Deshalb kommen Sie zu dieser Ansicht, Sie müssen gehen Sie durch die navigation-controller da, dass nicht irgendwelche Eigenschaften, die Sie interessiert sind bei der Einstellung.
Ihrem zweiten übergang geht direkt zu einem single-view-controller, so können Sie diese direkt.
InformationsquelleAutor jrturton