Comment faire pour faire disparaître propre point de vue contrôleur et de présenter un autre point de vue contrôleur dans un bouton du robinet?
Disons que j'ai 3-vue-contrôleur étiquetés "A","B" et "C".
Droit maintenant, "A" est la rootViewController de la fenêtre et il présente "B" modal lorsqu'un bouton est actionné. En "B", lorsqu'un bouton est actionné, il est censé être rejeté par "A" puis "A" sera présent C modal immédiatement.Comment peut-on le faire?
Voici mon code dans l'espoir de réaliser cet objectif, mais je n'arrivais pas à le faire.
À la "Une" viewController, j'ai déclaré une propriété de tenir une de bloc dans le fichier d'en-tête à être appelée lorsque "B" viewController est rejeté par "Une".
@property (nonatomic, copy) void (^presentZapLaunch)(void);
C'est "Un" viewController méthode actuelle de présenter "B"
-(void)presentNextViewCon
{
CYCGestureZapZapViewController *gestureViewCon = [[CYCGestureZapZapViewController alloc]init];
if (!self.presentZapLaunch) {
__weak CYCZapZapViewController *weakRefCon = self;
self.presentZapLaunch = ^{
CYCZapZapViewController *preventWeakRefCon = weakRefCon;
CYCZapZapLaunchViewController *zapLaunch = [[CYCZapZapLaunchViewController alloc]init];
NSLog(@"Called");
[preventWeakRefCon presentViewController:zapLaunch animated:YES completion:nil];
};
}
[self presentViewController:gestureViewCon animated:YES completion:nil];
}
C'est "B" rejeter la méthode de licenciés par "A" et "A" devrait présenter "C" immédiatement
-(void)presentNextViewCon
{
NSLog(@"Hello");
[self.presentingViewController dismissViewControllerAnimated:self completion:^{[(CYCZapZapViewController *)self.presentingViewController presentZapLaunch];}];
}
*Notez que je suis en utilisant "Une" afficher le contrôleur de la rootViewController de la fenêtre, et "Une" pose "B" - vue-contrôleur modal.
Tous les "A","B" et "C" sont en vue des contrôleurs.
Je suis en utilisant Un comme l'rootViewController et je ne suis pas en utilisant UINavigation Contrôleur pour une certaine raison. Donc j'ai présenté B-vue-contrôleur modal. Maintenant, je veux que, lorsque B-vue-contrôleur est rejeté par Une, à Une volonté de présenter C-vue-contrôleur immédiatement. Je ne pense pas que la présentation modal-vue-contrôleur est à l'aide de la pile. S'il vous plaît dites-moi si je me trompe
OriginalL'auteur user3526002 | 2014-05-29
Vous devez vous connecter pour publier un commentaire.
vous pouvez le faire en utilisant le protocole disons par exemple comme ci-dessous:-
À votre B viewController paramètre de Protocole :
.m classe
Maintenant à vous A_viewController .h classe:
.m classe
IMPORTANT lorsque vous preseting Bviewcontroller de A_viewController ne définissez pas de délégué avec un objet comme
Mise à JOUR
Ici, il est-je créer une démo de travail comme:
EXEMPLE DE CODE LIEN http://speedy.sh/2acSC/modelDemo.zip
oui je suggère l'utilisation de délégué est belle manière s'il vous plaît vérifier mes mises à jour de la réponse, je attech exemple de code lien de téléchargement et de vérifier le code ainsi
Non, je veux dire, Où voulez-vous me suggérer de me déléguer à B-vue-contrôleur n'est pas dans la présentation de la méthode? Il n'existe aucun autre lien pour télécharger le code parce que j'ai besoin de télécharger le downloader pour télécharger ce code.
comme vous l'avez dit De A à Présent B et de B appuyez sur le Bouton que de rejeter B et d'Un après rejeter B puis ouvrez C. à partir d'Une j'ai donc mis Délégué à B que délégué de la méthode appelée dans Un et rejeter B à partir de A et C Ouvert de A. vérifier la Démo que vous avez obtenu tout simplement.
Je sais ce processus, mais où dois-je écrire ce code dans Un contrôleur. Est-il dans la méthode init d'Un contrôleur? Dois-je créer Bcontroller dans la méthode d'initialisation du et lui attribuer? Bcontroller.delegate = self(Acontroller);
OriginalL'auteur Nitin Gohel
Vous prenez sur un Bouton vous permet de nom, il controlButton. Passer ce bouton avec B et C avec la coutume méthode init. Cela signifie que votre UIViewController Un est d'avoir controllButton de référence. À l'aide de la méthode
définir le déclenchement bloc et comme ce
Mais la meilleure option est d'aller avec “Médiateur modèle de Conception” où un coordonnateur est chargé de la coordination de votre présent et de rejeter les actions.
OriginalL'auteur Goppinath
Vous ne pouvez pas rejeter B et présenter C simultanément.
Pour effectuer cette tâche, vous devez suivre certaines tâches.
Sur -(void)viewDidAppear:(BOOL)animé de 'A'
if (bool){
[auto presentViewController:c animés:OUI achèvement:nil];
}
OriginalL'auteur Sandeep Singh
Il semble qu'il n'est pas possible d'aller de B à C, sans montrer Un brièvement, qui a l'air de manquer de professionnalisme. Toutefois, vous pouvez mettre un noir à la sous-vue sur le haut de jusqu'à ce que vous avez animé, C.
Dans Swift 3:
OriginalL'auteur prewett