Ich dachte, ich würde eine weitere Möglichkeit hinzufügen. Sie können unter anderem zwei Szenen in einem Storyboard mithilfe eines Segues verbinden, das nicht an eine Aktion angehängt ist, und dann den Segue programmgesteuert in Ihrem View Controller auslösen. Die Art und Weise, wie Sie dies tun, besteht darin, dass Sie vom Eigentümer-Symbol der Datei am unteren Rand der Storyboard-Szene, die die Segue-Szene darstellt, ziehen und nach rechts in die Zielszene ziehen müssen. Ich werde ein Bild einwerfen, um es zu erklären.
Ein Popup wird für "Manual Segue" angezeigt. Ich habe Push als Typ gewählt. Tippen Sie auf das kleine Quadrat und stellen Sie sicher, dass Sie sich im Attributinspektor befinden. Geben Sie ihm eine Kennung, mit der Sie im Code darauf verweisen.
Ok, als nächstes gehe ich mit einem programmgesteuerten Balkenschaltflächenelement über. In viewDidLoad oder anderswo erstelle ich ein Schaltflächenelement in der Navigationsleiste mit folgendem Code:
UIBarButtonItem *buttonizeButton = [[UIBarButtonItem alloc] initWithTitle:@"Buttonize"
style:UIBarButtonItemStyleDone
target:self
action:@selector(buttonizeButtonTap:)];
self.navigationItem.rightBarButtonItems = @[buttonizeButton];
Ok, beachten Sie, dass der Selektor buttonizeButtonTap: ist. Schreiben Sie also eine void-Methode für diese Schaltfläche, und innerhalb dieser Methode rufen Sie den Segue wie folgt auf:
-(void)buttonizeButtonTap:(id)sender{
[self performSegueWithIdentifier:@"Associate" sender:sender];
}
Der Absenderparameter ist erforderlich, um die Schaltfläche beim Aufruf von prepareForSegue zu identifizieren. prepareForSegue ist die Framework-Methode, mit der Sie Ihre Szene instanziieren und ihr alle Werte übergeben, die sie für ihre Arbeit benötigt. So sieht meine Methode aus:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"Associate"])
{
TranslationQuizAssociateVC *translationQuizAssociateVC = [segue destinationViewController];
translationQuizAssociateVC.nodeID = self.nodeID; //--pass nodeID from ViewNodeViewController
translationQuizAssociateVC.contentID = self.contentID;
translationQuizAssociateVC.index = self.index;
translationQuizAssociateVC.content = self.content;
}
}
Ok, habe es gerade getestet und es funktioniert. Hoffe es hilft dir.