Pousser Vue sur Vue-Contrôleur dans iOS
En Bref :
Comment puis-je PushViewController sur ViewController ?
En Bref :
J'ai MainViewController
, Dans lequel j'ai un bouton sur le clic d'un bouton, je présente une vue appelée LoginViewController
.
Sur cette page (LoginViewController
), j'ai encore button
, sur un clic de cela, j'essaie de pousser ma vue-contrôleur(appelé HomeViewController
) il ne pousse.
Voici mon extrait de code,
MainViewController.m
- (IBAction)LoginClicked:(id)sender {
LoginViewController *vc = [[LoginViewController alloc] init];
[self presentViewController:vc animated:YES completion:nil];
}
LoginViewController.m
- (IBAction)buttonActionMethodOnLoginView:(id)sender{
NSLog(@"viewControllers %@",APPDELEGATE.nav.viewControllers);
//LoginViewController is not in this array
HomeViewController *obj = [[HomeViewController alloc] init];
[self.navigationController pushViewController:obj animated:YES];
}
Mais il n'a pas fonctionne pour moi. Aussi, j'ai imprimé a stack of view controllers
avant pushed
, mais il n'a pas LoginViewController
. Donc, sans l'ajout de LoginViewController
en a stack of view controllers
, Comment puis-je pushed
à HomeViewController
de LoginViewController
?
Quand je getBack de HomeViewController
, puis LoginViewController
devrait être ouvert..
Est-il possible à l'aide de faire cette unique NavigationController
?
Remarque:- Ici, j'ai juste pris un exemple d'utilisation de la Connexion, la Maison et les Principaux ViewController. Mais je veux que dans d'Autres Écrans.
LoginViewController
mettre en œuvre UINavigationViewController
? Vous pouvez essayer de pousser HomeViewController
avec self presentViewController
comme LoginViewController.Oui, je peux
present
que HomeViewController
. Mais, je veux push
que HomeViewController
de LoginViewController
..Votre LoginViewController doit avoir son NavigationController de pousser de LoginView Contrôleur.
Oui, Mais comment puis-je faire ça ?
avez-vous vérifié ma réponse? Avez-vous obtenir de l'aide?
OriginalL'auteur Meet Doshi | 2016-01-04
Vous devez vous connecter pour publier un commentaire.
salut, quand vous vous Présenter de Connexion view controller il suffit de présenter un navigationController comme:
Maintenant votre PresentedViewController est Un navigtioncontroller
maintenant, vous pouvez appuyez simplement sur pour votre Maison VC
L'espoir qu'il sera utile pour vous
pushed
- vue-contrôleur. MaisLoginVC
n'est pasdismissed
. Alors, quand je rejetteLoginVC
, puis il revenir àHomeViewController
. Et quand jepop
ce, à retrouverMainViewController
. Donc, cela n'a pas résolu mon problème.Laissez-moi vous expliquer acc. à mon code. lorsque u r sur mainVC et de Présenter une "UINavigationController" nav. vous êtes maintenant sur différents NavigationController Pas sur la version précédente, si vous voulez pousser à HomeVC de LoginVC. votre mainVC pas être dans cette Navigation.
Ok. Mais comment faire cela avec un
NavigationController
?Qu'avez-vous mis dans la réalisation de bloc? OMG
OriginalL'auteur Shubham bairagi
LoginViewController
ne devrait pas être poussé à la navigation de contrôleur de la pile. Laissez-moi vous décrire ci-dessous le "pourquoi".Notre
MainViewController
devrait être sur la pile - vous toujours envie d'y retourner.Sur l'action spécifique de montrer
LoginViewController
. Vous ne voulez pas que l'utilisateur soit en mesure de puiserback
et aller àMainViewController
. Plus tard, vous ne voulez pas que l'utilisateur de revenir àLoginViewController
. En raison de cela, vous avez besoin de le présenter comme le modal:Maintenant, nous pouvons voir
LoginViewController
. Lorsque l'utilisateur termine la connexion, de les rejeter et de les présenterHomeViewController
:NOTES:
Comme vous pouvez le remarquer,
myAwesomeActionToShowHome:
s'attend à ce que vous avez manette de navigation que votrerootViewController
. C'est du travail, mais devrait être plus agréable - vous devez vérifier si la navigation est en fait la manette de navigation au lieu de moulage. Ou vous pouvez créer un délégué ou un bloc à pousser de nouveau. C'est la plus rapide, la plus simple solution de travail, ce qui devrait être amélioré par la suite.Vous vraiment devrait lire: Apple Developer -> "Vue de la Programmation de l'automate" de la documentation, car ce sont les principes fondamentaux que vous devez savoir pour développer & design UX correctement.
Ici est le travail démonstration de l'échantillon.
Cela ne fonctionne pas moi.. à l'Aide de cela, quand j'essaie de pousser une vue sur la vue, à l'époque une-vue-contrôleur poussé mais n'a jamais montré, quand j'ai rejeté mon présentés vue, à cette époque, ma poussé à vue a montré. Donc, Ma question est, quand je pousse un view controller présenté de vue, à ce moment, je veux montrer que poussé vue-contrôleur sans quitter mon présentés vue..
J'ai créé un modèle de démonstration pour vous 🙂 s'il vous Plaît vérifier le lien: github.com/natalia-osa/SOFPushPopDemo
Si vous voulez revenir à ce contrôleur, il ne devrait pas être présentés par le biais de
presentViewController:animated:
mais viaself.navigationController pushNavigationController:
. La manette de navigation pile de la poignée d'aller en arrière et en avant.present..
devrait être utilisée seulement quand vous voulez la montrer et de ne pas "enregistrer dans l'histoire". Vous semblez avoir quelques trous dans les connaissances sur la façon de travailler avecUINavigationController
,UITabBarController
et de la gestion de la vue des contrôleurs. Veuillez lire: developer.apple.com/library/ios/featuredarticles/....Heureux que j'ai été capable de les aider et merci pour l'acceptation. Fournis le lien pour la démo dans la réponse 😉
OriginalL'auteur Vive
Vous ne pouvez pas pousser à partir d'une présentés vue-contrôleur. Je suggère, vous devez maintenir votre hiérarchie de navigation.
Pour que, à partir de votre MainViewController, vous devez présenter LoginViewController et vous devriez passer manette de navigation pour le MainViewController.
Puis à l'intérieur de LoginViewController, vous devez les pousser à HomeViewController comme ça,
En faisant cela, il sera ressembler, vous êtes en poussant à partir de LoginViewController mais en réalité, vous êtes en poussant à partir de MainViewController.
Vous pouvez personnaliser cette approche pour maintenir l'animation et de l'INTERFACE utilisateur pour ce flux.
Pourquoi? Quel est le problème avec XIBs? Vous avez seulement besoin de changer la façon dont vous allez créer un objet de votre vue-contrôleur.
Oui j'ai essayé.. Mais manuellement, je ne peux pas en mesure d'ajouter ma viewcontroller dans la Navigation de Contrôleur de la pile..
Vous pouvez consulter ceci, ceci et ceci. Ces liens vous montrer comment créer de la manette de navigation ci-vue-contrôleur de la programmation. Laissez-moi savoir si vous avez encore besoin de plus d'aide.
Je ne suis pas sûr de savoir pourquoi vous faites cela. Il semble être incorrecte. Au lieu de cela, votre MainViewController doit être à l'intérieur
UINavigationController
. Ainsi, vous n'avez pas besoin de réinitialiser quelque chose tout en présentantLoginViewController
. E. g.LoginViewController *controller = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:[NSBundle mainBundle]];
OriginalL'auteur Hemang
1) présente un
navigation controller with its
racine-vue-contrôleur " set as-vue-contrôleur .Espère qu'il va travailler pour vous.
OriginalL'auteur Rohit KP
Le problème est que
LoginViewController
n'a pas de manette de navigation. Ensuite, vous lui en donner une.MainViewController.m
Créer un
UINavigationController
, mettreLoginViewController
dans la pile et de présenter lesUINavigationController
.LoginViewController.m
Rejeter
Appel
dismissViewControllerAnimated
dans votreMainViewController
.OriginalL'auteur ukim
Créer un UINavigationController instance
[[UINavigationController alloc] initWithRootViewController:[[LoginViewController alloc] init]]
Présent que navigationController puis appuyez quelle que soit VC vous le souhaitez.
OriginalL'auteur Hunaid Hassan
MainViewController.m
LoginViewController.m
oui, c'est faute de frappe. maintenant, vous pouvez essayer. il fonctionnera
OriginalL'auteur darshan
C'est très simple code pour présenter view controller et poussez-vue-contrôleur.
OriginalL'auteur Bera Bhavin
suffit de mettre ce code dans objective c sur bouton action
OriginalL'auteur iTALIYA
Vous avez à
Push
de votre firstView (MainViewController
), mais vous pouvez utiliser d'animation de même quePresentView
etDismissView
. Utilisez le code suivant :-Pour Pousser (sur
MainViewController
)Pour Pop (sur
LoginViewController
)L'aide de ce code, vous pouvez obtenir de l'animation de même que
Present-Dismiss ViewControllers
. Reportez-vous cette réponse pour plus de détails.Et après cela, vous pouvez utiliser votre code pour
Pushing
LoginViewController
àHomeViewController
De l'espoir, c'est ce que vous cherchez. Aucun souci de revenir à moi. 🙂
OriginalL'auteur Meet Doshi
Pour Swift 3.0
Présenter votre point de vue contrôleur comme une nouvelle rootViewController
Maintenant pousser votre vue-contrôleur de présenté view controller
OriginalL'auteur emraz