Obtenir ViewController du Storyboard
J'ai deux ViewControllers, qui ne le sont pas (directement) connecté à un Segue. Mais je veux changer une Chaîne de caractères dans la deuxième VC, auquel j'ai eu dans le premier. Mon essai a été:
#import "secondViewController.h"
@interface firstViewController ()
@property NSString* originalString;
@end
@implementation firstViewController
-(void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
secondViewController* svc = [secondViewController new];
svc.anotherString = self.originalString;
}
Mais il dosent travail, car je n'ai créé une instance de la deuxième VC, de sorte que la valeur n'a pas été enregistré. Aussi je ne peux pas utiliser la table de montage séquentiel ID, parce que j'utilise Xcode 5.
J'ai un menuVC à partir de laquelle vous pouvez obtenir à la firstVC et la secondVC. Et à partir de la firstVC je peux revenir en arrière (avec la navigationbackbarbutton) dans le menu. donc: menu->firstVC->menu. menu->secondVC->...->menu
Ma essayer avec StoryboardID:
-(void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
secondViewController* svc =[[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"secondVCSrorybradID"];
svc.anotherString = self.originalString;
}
? pourquoi vous ne pouvez pas utiliser le storyboard d'une pièce d'identité ???
Demandez-vous pourquoi originalString n'est pas mis à jour lorsque vous modifiez svc.anotherString?
Oui, c'est ma question iani
N'utilisez pas de
[UIStoryboard storyboardWithName:]
. Puisque c'est en vue contrôleur, vous pouvez utiliser la vue du contrôleur de storyboard de la propriété: [self.storyboard instantiateViewControllerWithIdentifier: @"secondVCSrorybradID"]
. Et est votre storyboard ID vraiment secondVCSrorybradID
? Deux fautes d'orthographe en une seule ID? Il doit être une correspondance exacte, lettre pour lettre, et ont la bonne majuscules/minuscules, ou il ne parvient pas à charger la vue-contrôleur.OriginalL'auteur Sam | 2014-03-04
Vous devez vous connecter pour publier un commentaire.
Vous devez transmettre vos données successivement par le biais de votre
UIViewController
s de navigation. Si, par exemple, vous avez une navigation commeFirstVC > SecondVC > ThirdVC
:Dans votre FirstVC.m, utilisation :
Avec
secondVCString
être un@property
dans votre deuxième ViewController.Dans votre SecondVC.m, utilisation :
Avec bien sûr
thirdVCString
être un@property
dans votre troisième ViewController.Edit:
Que vous avez mis à jour votre question, voici ce que je propose :
Dans votre MenuVC, ajouter ceci :
Dans votre FirstVC et SecondVC, ajouter ceci :
Lorsque vous appuyez à FirstVC ou SecondVC, utilisez
prepareForSegue
pour définir la destination de vue-contrôleurmenu
propriété à votre menu :Dans FirstVC ou SecondVC, vous pouvez modifier la
NSString
de la valeur à partir de votre menu à l'aide de_menu.importantString = @"";
Pouvez-vous modifier votre question avec votre app de la structure ? Quelque chose comme FirstVC -- SecondVC -- etc.
J'ai mis à jour ma réponse
OUI, il fonctionne!! merci 😀 Pas exactement comme vous, mais c'était votre idée principale avec le menuVC merci tellement de choses!! §> U
OriginalL'auteur rdurand
vous pouvez passer la chaîne à seconde vue-contrôleur avec ce code.
//vous devez créer anotherString propriété dans le second point de Vue du Contrôleur .h Fichier.
vous pouvez maintenant obtenir la chaîne de originalString à la deuxième VC. Maintenant vous pouvez obtenir cette valeur de retour de la deuxième VC pour la première VC.
espère que cela vous aide.
OriginalL'auteur
Vous ne devez jamais utiliser
new
pour créer une vue contrôleur.Si vous utilisez des story-boards mais de ne pas utiliser enchaîne, vous pouvez toujours créer une vue contrôleur de la table de montage séquentiel et à l'appeler.
Utiliser la méthode
instantiateViewControllerWithIdentifier:
pour créer une instance de la cible-vue-contrôleur. L'ensemble des propriétés que vous souhaitez définir, et enfin faire un appel à l'afficher (présenter modal, push sur la pile de navigation, ou tout ce qui est approprié pour votre programme.)Ne pouvez pas utiliser un storyboard ID-tu dire? Pourquoi? Vous avez dit "parce que j'utilise Xcode 5", qui n'a aucun sens.
mais je n'ai pas tout storryboard ID, vraiment... je n'ai que le Titre
Ok, mais vous pouvez (et devriez) attribuer un storyboard ID à n'importe quelle scène dans votre storyboard. C'est pris en charge à partir de Xcode 4.0 à la version actuelle, la version 5.0.2
Mec, vous avez besoin d'écrire des phrases que d'autres personnes puissent comprendre, si vous souhaitez de l'aide. "Il ne serait pas sauvé" n'est pas une de ces phrases.
OriginalL'auteur Duncan C