performSegueWithIdentifier ne fonctionne pas
Mon principal view controller est une manette de navigation et il est conforme à EditViewControllerDelegate
protocole. Il est le délégué de mes deux contrôleurs de vue que j'ai besoin de présenter modal.
@interface EditViewController : UIViewController
@property (nonatomic) id <EditViewControllerDelegate> delegate;
@end
@interface EditSomethingViewController : EditViewController
@end
@interface EditSomethingElseViewController : EditViewController
@end
Dans un editViewController:(EditViewController *)evc didFinishEditing:(Something *) something
méthode, j'ai d'abord obtenir les données dont j'ai besoin, puis je rejette le evc
et appel
[self performSegueWithIdentifier:@"My Segue" sender:self];
"Mon Segue" est défini dans Xcode et l'identifiant est le même à la fois dans le code et dans Xcode (j'ai essayé de changer juste pour voir si elle est appelée et elle lève une exception)
Quand je change de "Mon Seque"'s de type à pousser, il a travaillé.
Mais avec modal, il ne fait rien après, je suis de retour à la fenêtre principale du contrôleur de
Ce qui me manque?
ÉDITÉ:
J'ai accidentellement trouvé un avertissement dans mon storyboard! (c'est bizarre, parce que ce n'est pas un avertissement dans le projet "visible de partout")
Dans les connexions' inspecteur en vertu de "Référencement Storyboard Enchaîne" il y a un avertissement pour mon modale des enchaînements. il dit :
(null) is not a valid containment controller key path
J'ai vérifié d'autres moyens de transport enchaîne et il est le même avertissement, mais je n'ai pas besoin de les déclencher par le code afin de ne pas avoir de problèmes avant.
ÉDITÉ 2:
-(void)editViewController:(EditViewController *) evc
didFinishEditing:(Something *) something
{
self.something = something;
[self dismissModalViewControllerAnimated:YES];
For ( OtherThing * otherThing in self.something.otherthingsArray)
{
NSLog(@"%@", otherThing);
}
[self performSegueWithIdentifier:@"My Segue" sender:self];
}
Pour l'instant il ne fait rien d'autre, mis à part un NSLog de voir "quelque chose"de la description. J'ai juste ajouté un NSlog à prepareForSegue et elle est appelée, mais la séquence n'est pas effectuée sur l'écran.
Je croyais que vous aviez dit que vous étiez rejet de l'affichage de la modification de contrôleur et de l'appel de performSegueWithIdentifier dans la méthode. Où en êtes-vous de faire ces choses? Je veux voir comment vous faire part de voir si c'est là l'erreur.
Oui, bien sûr! mais je voulais rien de plus. Je vais l'ajouter à la question juste pour enlever toute ambiguïté.(EDIT 2)
comment la vue d'effectuer: [auto performSegueWithIdentifier:@"Mon Segue" expéditeur:self]; si c'est en rejetant avant de lui-même [auto dismissModalViewControllerAnimated:YES]; ?
OriginalL'auteur Moxy | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
Vous devez attendre jusqu'à ce que votre autre point de vue, contrôleur est fait de l'animation, avant d'effectuer la séquence. Vous pouvez utiliser le nouvel iOS 5 méthode:
Si vous avez besoin d'un pré-iOS 5 façon de le faire, vous devez juste ajouter un délai pour donner le temps de l'animation avant d'effectuer la séquence.
Aussi, je ne sais pas si cela va résoudre tous vos problèmes, mais c'est un pas dans la bonne direction - vous avez certainement devraient se faire de cette façon.
Parfait! maintenant, il fonctionne.Merci!!!!. Je suppose que c'est sur les animations en cours d'exécution dans un thread différent, non? Ainsi, le performSegueWithIdentifier a été appelée, mais avant les animations se termine... j'ai essayé de le faire fonctionner avec dismissModalViewControllerAnimated:PAS et cela a fonctionné ainsi.
aucun indice sur l' "(null) n'est pas valide confinement contrôleur de chemin de clé" ?
Je pense que "(null)" avertissement n'est qu'un Xcode bug. Rien à craindre.
OriginalL'auteur Richard Venable