web-dev-qa-db-fra.com

Comment transmettre des données dans le storyboard seque ios5 uitableview to detail view

Je crée une application dans ios5 à l'aide de storyboards. J'ai un contrôleur tableview intégré dans un contrôleur de navigation et lorsque vous cliquez sur les cellules du contrôleur tableview, certains détails relatifs à cette rubrique de cellule doivent être transmis à une vue détaillée. J'utilise un plist pour renseigner la vue de table et la vue détaillée. Je me suis bien débrouillé sans utiliser le scénarimage, mais je voulais apprendre à utiliser le scénarimage. Je vais seque à ma vue de détail de la tableviewcontroller.

Mon code pour le seque est:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"DetailViewControllerSeque"])
    {   DetailViewController *detailViewController = [segue destinationViewController];  
        NSString *path = [[NSBundle mainBundle] bundlePath];
        NSString *finalPath = [path stringByAppendingPathComponent:@"questList.plist"];
        NSArray *tempArray = [finalPath valueForKey:@"description"];
        NSString *descriptionString = [tempArray valueForKey:@"description"];
        detailViewController.detailDescriptionText.text = descriptionString;    
    }
}

Merci pour toute aide.

25
Catacomber

J'avais le même problème (par manque d'expérience avec iOS5).

Il s’avère qu’il s’agit d’un exemple d’application avec le SDK iOS5 qui dispose d’une vue sous forme de tableau qui utilise des séquences lorsqu’une cellule du tableau est exploitée: "Exploration simple".

http://www.archive.org/web/20130513140140/http://developer.Apple.com:80/library/ios/#samplecode/SimpleDrillDown/Introduction/Intro.html

Vous définissez la séparation dans la cellule de tableau et lui donnez un nom dans le fichier de storyboard.

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

    /*
     When a row is selected, the segue creates the detail view controller as the destination.
     Set the detail view controller's detail item to the item associated with the selected row.
     */
    if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) {

        NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
        DetailViewController *detailViewController = [segue destinationViewController];
        detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row];
    }
}
67
M. Bedi

J'ai eu le même problème, parties suivies du tutoriel Ray Wenderlich et a constaté que vous devez sélectionner la cellule du tableau et Ctrl-Drag à votre contrôleur de vue. Ensuite, appelez performSegueWithIdentifier dans didSelectRowAtINdexPath.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     [self performSegueWithIdentifier:@"mySegueId" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{   
        NSLog(@"prepareForSegue: %@", segue.identifier  );      
        if ([segue.identifier isEqualToString:@"mySegueId"])
        {
            DetailController *detailController = segue.destinationViewController;
            detailController.delegate = (id)self;
            detailController.selected = selectedRow;
        }   
}
12
neefje

Pas besoin d'appeler: [self performSegueWithIdentifier:@"mySegueId" sender:self];

vous pouvez utiliser NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; pour obtenir les informations que vous avez sélectionnées, dans votre fonction - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{...}.

1
Sijiu

Essayez de cette façon

Prénom Votre nom (de la cellule à la vue détaillée) .Puis

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


    if([segue.identifier isEqualToString:@"yourSegueName"]){

        DetailViewController * detailViewController =segue.destinationViewController;
        detailViewController =[self.yourTableViewDataArray objectAtIndex:[self.yourTableView indexPathForSelectedRow].row];

    }

}

N'oubliez pas d'importer votre SecondViewController/DetailViewController

0

J'ai le même problème et je ne l'ai pas encore résolu avec les storyboards. Cependant, je pense que la séquence devrait commencer à la cellule, et non à l’ensemble du contrôle de tableview. si vous utilisez des cellules prototypes, cela pourrait fonctionner - mais je ne connais pas les types de cellules créées par le code. apprécierait toute aide sur ce sujet, aussi.

Edit: Le didacticiel de http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-and.html suggère qu'aucune solution de séparation n'existe et que vous devez toujours effectuer la transition vers vue détaillée en code. Je ne sais pas à quel point c'est correct, mais je vais le faire ainsi jusqu'à ce que quelqu'un me montre la solution pure storyboarding/segue;).

0
morgler