Comment utiliser push Storyboard Transition pour la NavigationController
Je suis nouveau dans le développement d'iOS. J'ai créé une Application à l'aide de Storyboard pour naviguer sur les différentes pages.
Quand je clique sur Ajouter BarButton de la Clientèle de la page --> aller vers le Client de la Page.(à l'aide de Modal
Storyboard Segue)
Là, quand j'ai entrer le nom d'utilisateur et mot de passe et cliquez sur le bouton enregistrer --> revenir à la page Client.
Et tout fonctionne bien.
Le problème c'est que je veux avoir back button
en Ajouter page Client. Je sais déjà que je peux utiliser Push
Storyboard Segue, mais quand je l'utilise j'ai le visage avec une erreur:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'
*** First throw call stack:
(0x13cb022 0x155ccd6 0xeff1b 0xefa24 0x44bde6 0x4404d0 0x13cce99 0x1814e 0x256a0e 0x13cce99 0x1814e 0x180e6 0xbeade 0xbefa7 0xbe266 0x3d3c0 0x3d5e6 0x23dc4 0x17634 0x12b5ef5 0x139f195 0x1303ff2 0x13028da 0x1301d84 0x1301c9b 0x12b47d8 0x12b488a 0x15626 0x25ed 0x2555)
terminate called throwing an exception(lldb)
CustomerViewController.h:
#import "AddCustomerViewController.h"
@interface CustomerViewController : UITableViewController<AddCustomerViewControllerDelegate>
{
IBOutlet UITableView *tableview;
NSMutableArray *customers;
}
@property(nonatomic,retain)IBOutlet UITableView *tableview;
@property(nonatomic,retain)NSMutableArray *customers;
@end
C'est le code que j'utilise dans CustomerViewController.m:
self.customers = [[NSMutableArray alloc]init];
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"AddCustomer"])
{
UINavigationController *navigationController = segue.destinationViewController;
AddCustomerViewController *addCustomerViewController = [[navigationController viewControllers] objectAtIndex:0];
addCustomerViewController.delegate = self;
}
}
-(void) addCustomerViewControllerDidSave: (AddCustomerViewController *) Controller newCustomer: (Customer *) customer
{
[self dismissViewControllerAnimated: YES completion:NULL];
[self.customers addObject:customer];
[self.tableview reloadData];
}
AddCustomerViewController.h:
#import "Customer.h"
@class AddCustomerViewController;
@protocol AddCustomerViewControllerDelegate <NSObject>
-(void) addCustomerViewControllerDidSave: (AddCustomerViewController *) Controller newCustomer: (Customer *) customer;
@end
@interface AddCustomerViewController : UITableViewController
{
}
@property (nonatomic, weak) id <AddCustomerViewControllerDelegate> delegate;
@property (nonatomic, strong) IBOutlet UITextField *firstnameTxt;
@property (nonatomic, strong) IBOutlet UITextField *lastnameTxt;
- (IBAction)save:(id)sender;
@end
Et AddCustomerViewController.m:
- (void)save:(id)sender
{
NSLog(@"Save");
Customer *newCustomer = [[Customer alloc]init];
newCustomer.firstname = self.firstnameTxt.text;
newCustomer.lastname = self.lastnameTxt.text;
[self.delegate addCustomerViewControllerDidSave:self newCustomer:newCustomer];
}
Pouvez-vous m'aider comment puis-je utiliser Push
Storyboard Segue (avoir bouton de retour) ?
Oui, il est Modal qui fonctionne très bien.
OriginalL'auteur Ali | 2012-08-05
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, se débarrasser de la deuxième manette de navigation comme ce que tout le monde ici en disent.
Puis, dans le storyboard, connectez le bouton "+" directement à Ajouter à la Clientèle-Vue-Contrôleur et de définir la séquence que vous poussez.
Ensuite, cliquez sur la barre de navigation du Client-vue-contrôleur, dans les attributs de l'inspecteur de l'endroit où vous devriez avoir défini le titre ("Client") de ce point de vue, il devrait y avoir un Bouton "Retour" de ligne. De Type "Dos" et vous obtiendrez un bouton de Retour en Ajouter à la Clientèle-vue-contrôleur.
Dans prepareForSegue,
Pour fermer Ajouter à la Clientèle-Vue-contrôleur, utilisez popViewControllerAnimated comme suit:
OriginalL'auteur Rick
Vous avez seulement besoin d'une manette de navigation. Essayez de supprimer la deuxième manette de navigation et de définir la séquence de votre première table directement à votre deuxième.
Edit:
J'ai pris un regard plus attentif et je pense que vous devriez utiliser
popViewControllerAnimated
plutôt quedismissModalViewControllerAnimated
. Ce dernier est modale, le premier est pour pousser.édité. essayez si cela va fonctionner.
c'est que pour
popViewControllerAnimated
?Merci, Mais comment puis-je utiliser popViewControllerAnimated? Je ne sais pas où ai-je utiliser dismissModalViewControllerAnimated!
Première ligne de votre
addCustomerViewControllerDidSave
. DésolédismissModalViewControllerAnimated
est le même quedismissViewControllerAnimated
.OriginalL'auteur danqing
Vous ne pouvez pas pousser une manette de navigation. Je doute que vous avez besoin de la deuxième, dans ce scénario, mais, parfois, cette utilisation peut venir dans maniable.
Cependant, vous devez définir le style Modal (ou de la Coutume - et de fournir votre propre segue sous-classe de mise en œuvre).
Quand c'est fait, appel dismissViewControllerAnimated:achèvement: "pop" de la manette de navigation.
OriginalL'auteur Jody Hagins