Question

Salut j'ai un story-board et je suis en mesure de montrer une vue détaillée en cliquant sur une cellule de tableau. Je veux ajouter des fonctionnalités supplémentaires de sorte que la cellule en fonction de ce que je clique, je montre un contrôleur de vue différent. J'ai essayé deux glisser de la même enchaînements cellule, mais elle ne permet pas.

Ma pensée était que j'aurais deux Segue de la cellule de chaque pointage à un point de vue différent, puis invoquer la Segue souhaitée:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSInteger row = indexPath.row;
    NSLog(@"Selected Item :-) %@",[NSString stringWithFormat:@"%@",[myData objectAtIndex:row]]);
    if(row %2 ==0){
        NSLog(@"Even");        
        [self performSegueWithIdentifier:@"ShowSecondIndex" sender:self];
    }else{
        [self performSegueWithIdentifier:@"ShowSelectedMovie" sender:self];
        NSLog(@"Odd");

    }

} 

Je puis gérer la Segue dans prepareForSegue

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    NSLog(@"Prepare For Segue ID:%@",[segue identifier]);

    if([[segue identifier] isEqualToString:@"ShowSelectedMovie"]){
        Tab2_ItemViewController *vc = [segue destinationViewController];
        NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];
        NSLog(@"Selected Index: %d",selectedIndex);
        [vc setSelectedItem: [NSString stringWithFormat:@"%@",[myData objectAtIndex:selectedIndex]]];
        NSLog(@"String Value: %@",[NSString stringWithFormat:@"%@",[myData objectAtIndex:selectedIndex]]);
        [vc setSelectedIndex:selectedIndex];


    }else if([[segue identifier] isEqualToString:@"ShowSecondIndex"]){

        NSLog(@"Viewing Second Index");
    }

}

Cependant, il ne montre jamais la deuxième vue. Est-ce parce que ce ne est pas possible d'avoir deux d'une cellule des enchaînements de table. J'ai aussi essayé glisser deux de la Segue du contrôleur à chaque destination plutôt que de la cellule et l'autre du contrôleur, mais pas de chance filon-couche ???

Était-ce utile?

La solution

Ne pas essayer de brancher les Segues à un tableviewcell dans ce cas. Accrochez-les au contrôleur View lui-même.

Autres conseils

Ne pas essayer de créer plusieurs enchaînements d'un TableCell à d'autres contrôleurs de vue, vous voulez ctrl + glisser de l'icône du contrôleur de vue sous le contrôleur d'affichage dans l'interface story-board aux viewcontrollers que vous souhaitez enchaîner à. Ensuite, il vous permettra de configurer plusieurs enchaînements.

capture d'écran montrant plusieurs enchaînements

et de faire réellement le travail de enchaînements, vous devez ajouter des identificateurs aux enchaînements eux-mêmes, que vous pouvez faire en cliquant dessus puis en lui donnant un nom dans l'inspecteur des propriétés:

donnant un identifiant enchaînement

puis, pour l'exemple de TableCells, dans votre UITableViewDelegate, dans

-tableView:didSelectRowAtIndexPath: 

vous pouvez utiliser

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender 

pour démarrer manuellement une Segue en fonction de votre propre logique de ce Segue doit être choisi.

Voici un exemple de code de mon projet de démonstration:

-         (void)tableView:(UITableView *)tableView
  didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *segueName = nil;

    if (type == kCore) {
        segueName = @"segue1";
    } else if (type == kStdlib) {
        segueName = @"segue2";
    }

    [self performSegueWithIdentifier: segueName sender: self];
}

type est un établissement de contrôleur de vue qui détermine enchaînement doit être effectuée.

Comme la réponse ci-dessus dit, la clé est de créer Segue en reliant deux contrôleurs de vue.

3,1 rapide, avec un contrôle de segment de deux états

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var segue: String!
if selectedSegment == 0 {
    segue = "segue1"
} else  {
    segue = "segue2"
}
self.performSegue(withIdentifier: segue, sender: self)

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top