Accédez à un autre ViewController par programmation à l'aide Personnalisée Segue
J'ai deux contrôleurs dans le storyboard. Je n'ai réussi à naviguer à partir de la 1ère à la 2ème programme:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
YourViewController *yourViewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"yourViewControllerID"];
[self.navigationController pushViewController:yourViewController animated:YES];
Je veux utiliser mon custom
Segue pour naviguer vers une autre page au lieu de pushViewController
sans utiliser interface builder.
C'est ma coutume Segue que je pourrais facilement utiliser avec interface builder:
@interface LeftToRightSegue : UIStoryboardSegue
Comment le faire par programmation?
OriginalL'auteur Ali | 2012-10-20
Vous devez vous connecter pour publier un commentaire.
Voici comment je l'ai fait. J'ai créer mon segue sous-classe ensuite appeler à partir de mon sourceViewController IE celle que je suis, init mon destinationViewcontroller puis de les transmettre à mon habitude segue classe.
OriginalL'auteur Alex Reynolds
Je crois que vous avez à utiliser interface builder pour informer le storyboard qu'une transition d'un type particulier doit exister entre les deux éléments et comment les identifier. Vous pouvez déclencher dans le code à l'aide de
performSegueWithIdentifier:
mais, d'après les docs, vous ne pouvez pas en créer un dans le code:"De votre application ne crée jamais enchaîner directement les objets; ils sont toujours créés en votre nom par iOS lorsqu'une transition est déclenchée."
OriginalL'auteur Phillip Mills
Comme Phillip Mills a écrit, vous devez créer un segue dans l'IB. Vous pouvez le faire en appuyant sur ctrl-les glisser à partir d'un point de vue contrôleur à l'autre et en choisissant "Custom" dans le menu qui apparaît. Sélectionnez ensuite le nouveau segue et ouvrir les attributs de l'inspecteur. Entrez un identifiant de la séquence et de définir sa classe pour le nom de la classe que vous avez mis en œuvre. Après avoir terminé ces étapes, vous pouvez utiliser
performSegueWithIdentifier:
.OriginalL'auteur Marcin Kuptel
Je suis en supposant que vous vous demandez comment vous devez mettre en œuvre la coutume segue sous-classe de sorte que vous n'avez pas à utiliser la navigation controller?
Si oui, alors je voudrais remplacer le
perform
méthode dans votreLeftToRightSegue
classe comme suit:Vous pouvez changer le type d'animation si vous voulez quelque chose de différent qu'un push.
Aussi, ne pas oublier d'importer QuartzCore:
OriginalL'auteur Sylvain Guillopé
Moyen rapide, Cliquez sur la Séquence et sélectionnez personnaliser.
Maintenant, vous pouvez créer une sous-classe de UIStoryboardSegue comme suit
class MySegue: UIStoryboardSegue {
override func perform() {
let source = sourceViewController as! UIViewController
if let navigation = source.navigationController {
navigation.pushViewController(destinationViewController as! UIViewController, animated: false)
}
}
}
puis sélectionnez Segue et de l'ensemble de la Classe et module correctement. Espérons que cela aide
OriginalL'auteur Vinu David Jose