D'autres moyens de pousser la vue des contrôleurs de storyboard par programmation
Je suis à la recherche d'autres moyens de pousser la vue des contrôleurs de instancié sur le storyboard de la programmation.
En fait, j'ai trouvé deux façons, que j'utilise pour aller à la vue suivante, mais aussi de revenir à la précédente:
-
à l'aide de
pushViewController
:UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; LocationWebView *lvc = [storyboard instantiateViewControllerWithIdentifier:@"LocationWebView"]; [self.navigationController pushViewController:lvc animated:YES];
-
effectuer
Segue
programme:[self performSegueWithIdentifier: @"SongSegue" sender: self];
Avez-vous quelques conseils sur les alternatives et sur la meilleure façon cette opération doit être effectuée? Notez que je ne parle pas des points de vue modal.
- personnellement, depuis que vous êtes à l'aide d'un Storyboard et enchaîne, puis le #2 est plus agréable de le faire.
- peut #1 être utile si vous avez de pousser un viewcontroller qui ne peut pas avoir un segue? c'est à dire pousser viewcontroller de divulgation bouton de mapview annotations.
- Tout peut avoir un segue. Tout ne peut pas avoir une automatique segue entièrement fait de l'IB (comme des boutons et des cellules de tableau). Mais vous pouvez tout de même créer une séquence de l'IB à partir d'une vue contrôleur lui-même et d'utilisation #2, pour l'exécuter; c'est exactement ce que vous feriez pour carte légende des boutons.
- Je vous conseille d'utiliser #2 si vous avez la vue cible contrôleur représentées dans votre storyboard (vous devez dans un souci de segue). Mais #1 (ou plutôt à la dernière ligne) lors de la création de la vue-contrôleur par programme (comme pour de très simple/simple d'utilisation afficher les contrôleurs).
Vous devez vous connecter pour publier un commentaire.
Apple recommande l'utilisation de
performSegueWithIdentifier:sender:someObject
de programmation pour effectuer enchaîne. Il existe au moins un couple d'avantages à le faire de cette façon:Moins de votre propre code signifie que vous êtes en laissant le cadre de faire plus de travail. Si Apple arrive avec quelques super-cool de nouveaux effets visuels pour pousser enchaîne, ou améliore les performances, ou corrige un bug dans certaines future version d'iOS, votre application peut obtenir gratuitement. Et chaque ligne de code que vous écrivez pour faire un travail le cadre pourrait être fait pour vous augmente votre chance de la rédaction de bugs.
Plus de l'IB peut signifier plus facile à modifier. Si vous décidez que vous voulez modifier tous vos push enchaîne à modale enchaîne, ou de la coutume, des enchaînements de type où vous faire votre propre super-cool, effet visuel, vous pouvez choisir 'em all au bureau de l'IB et de modifier la séquence type en un seul clic au lieu de rechercher dans votre code.
En outre, si vous utilisez la première ou la deuxième méthode, poussant un view controller afin de "revenir" à la vue précédente contrôleur ne fonctionne pas de la façon dont vos utilisateurs attendent. Lorsque vous appuyez sur un
SongViewController
, il est ajouté à la fin de la pile de navigation:Si vous poussez ensuite
LocationViewController
de nouveau à "revenir":Si l'utilisateur appuie sur le bouton précédent de la barre de navigation, ils vont revenir en arrière à partir de l'emplacement de la vue à la chanson de vue de l'emplacement de l'afficher de nouveau. (Aussi, si vous continuez à faire cela, tous les "back" et "forward" ajouter à une augmentation croissante de la chaîne de vue des contrôleurs, qui pourrait conduire à d'autres problèmes.)
Au lieu de cela, vous devriez laisser la manette de navigation poignée de revenir. Il met un bouton dans la barre de navigation pour ce faire, ce qui devrait convenir à la plupart des cas d'utilisation. Si vous avez besoin de faire votre propre contrôle de revenir en arrière, vous ne pouvez pas le faire au bureau de l'IB avec iOS 5, mais vous pouvez le faire par programmation avec la manette de navigation du
popViewControllerAnimated:
méthode.Personnellement, j'utilise le #2, lorsque je suis dans un UIViewController c'est en vertu d'un UINavigationController. Je ne crois pas que ça marchera, il n'est pas UINavigationController.
Quand je suis en utilisant un point de vue qui est sous une UITabBarController, j'utilise le code suivant à la transition vers un autre onglet:
objectAtIndex:0
êtreobjectAtIndex:tabIndex
?