utilisez prepareForSegue pour le button

Salut je crée le button par programmation et je connecte mon button à une autre vue, mais j'ai un problème de gravure que je devrais utiliser la méthode prepareForSegue pour storyboard mais je ne sais pas comment il y a un échantillon sur internet mais j'obtiendrai une erreur échantillon, pourriez-vous m'aider s'il vous plaît

Merci d'avance!

voici mon code

Bouton de création

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; button.backgroundColor=[UIColor colorWithRed: 201.0/255.0 green: 201.0/255.0 blue:201.0/255.0 alpha: 1.0]; button.tag = currentTag; currentTag++; [button.layer setBorderColor: [[UIColor blackColor] CGColor]]; [button.layer setBorderWidth: 1.0]; [button setTitle:[NSSsortingng ssortingngWithFormat:@"%d",currentTag] forState:UIControlStateNormal]; button.frame = CGRectMake(80*x, 32*y, 80, 32); [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; [buttonView addSubview: button]; 

Action pour le button

 -(void)buttonPressed:(UIButton *)button { NSLog(@"button %u -- frame: %@", button.tag, NSSsortingngFromCGRect(button.frame)); WeekView *crtObj=[[WeekView alloc]initWithNibName:@"WeekView" bundle:nil]; [self.navigationController pushViewController:crtObj animated:YES]; [crtObj release]; } 

Préparez-vous à segue

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToSsortingng:@"WeekView"]) { // Get reference to the destination view controller WeekView *vc = [segue destinationViewController]; // Pass any objects to the view controller here, like... [vc setMyObjectHere:object]; //// I don't know what should I write instead of object }} 

Erreur

entrez la description de l'image ici

Edit 2: **** J'ai un avertissement:

Les séquences initiées directement à partir des vues doivent avoir un identifiant à utiliser avec – [UIViewController performSegueWithIdentifier: sender:]

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToSsortingng:@"WeekView"]) { // Get reference to the destination view controller // WeekView *vc = [segue destinationViewController]; // Pass any objects to the view controller here, like... // [vc setMyObjectHere:object]; [segue.destinationViewController setTitle:@"WeekView"]; }} 

Il y a vraiment deux façons de pousser un controller de vue sur le controller de navigation.

  1. L'ancienne façon, tout en code. C'est ce que tu as fait. Vous pouvez complètement oublier les questions à ce stade.

  2. La nouvelle manière: établir une Segue dans Storyboard (pousser un segue d'un controller de vue vers un nouveau controller de vue, que vous définissez également dans Storyboard), lui donner un nom d' Identifier et ensuite utiliser ce code pour pousser le controller de vue.

.

 [self performSegueWithIdentifier:myIdentifyer sender:self]; 

où self est le controller de vue. Vous pouvez maintenant faire les personnalisations dans prepareForSegue:

l'exemple de code dans ce cas vous prepareForSegue:sender: simplement le type de chose que vous pouvez faire dans prepareForSegue:sender:

il suggère que le viewController auquel vous tentez de segue aurait une méthode setMyObjectHere: et il s'attendrait à ce que vous passiez cet object.

Par exemple, votre class peut avoir une méthode setTitle: et dans le prepareForSegue:sender: vous pouvez prédéfinir le titre en fonction des informations du controller à partir duquel vous exécutez la segue.

pour se débarrasser de l'avertissement, vous avez besoin d'un identifiant, comme dans l'image ci-dessous:

entrez la description de l'image ici

"L'ancienne façon de coder", ce n'est pas la meilleure façon de coder cela, mais si vous utilisez UIButtons et UIViews par programmation, vous ne devriez même pas utiliser de segues.

Créez un contrôle de vue racine dans le délégué de l'application, plutôt que de simplement activer ou désactiver les controllers de vue suivants et autres.

Par exemple, c'est tout ce dont vous avez besoin dans vos viewcontrollers:

 -(void)nextControllerButton:(UIButton*)button{ SearchViewController *nextController = [[SearchViewController alloc] init]; nextController.username = _username.text; nextController.password = _password.text; [self.navigationController showViewController:nextController sender:self]; }