Daten zwischen Ansichts-Controllern übertragen DidSelectRowsAtIndexPath Storyboards

In einer einfachen Test-App habe ich versucht, ein Array-Objekt mit dem Namen "thisArray" von der zu übergebenMasterViewController auf die eine Zeichenfolge mit dem Namen "PassedData" in derDetailViewController. Ich benutze Storyboards und dasUIViewController sind im Navigationscontroller eingebettet. Verwendung derprepareForSegue Methode, ich habe die Daten erfolgreich zwischen demUIViewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"pushData"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        DetailViewController *destViewController = segue.destinationViewController;
        destViewController.passedData = [thisArray objectAtIndex:indexPath.row];
    }
}

Jetzt aus einigen Gründen möchte ich verwendendidSelectRowsAtIndexPath anstattprepareForSegue. Ich habe das benutzt:

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSMutableString *object = thisArray[indexPath.row];
    detailViewController.passedData = object;   
}

Aber es hat nicht funktioniert. Ich habe folgendes benutzt:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];

    NSMutableString *object = thisArray[indexPath.row];
    detailViewController.passedData = object;
    [self.navigationController pushViewController:detailViewController animated:YES];  
}

Aber es hat auch nicht funktioniert.

FRAGE:

1) So schreiben Sie richtigdidSelectRowsAtIndexPath ersetzenprepareForSegue?

2) Wenn ich benutzedidSelectRowsAtIndexPath, muss ich die segue Verbindung zwischen dem entfernen?UIViewController im Storyboard?

3) Was ist, wenn zwischen den View-Controllern wirklich keine Segue-Verbindung besteht? Wie kann ich die Daten trotzdem zwischen ihnen übermitteln?didSelectRowAtIndexPath?

Vielen Dank!

UPDATE: Basierend auf der Antwort und den Kommentaren, die ich erhalten habe, habe ich Folgendes geschrieben:

Zuerst habe ich die Segue-Verbindung zwischen den Controllern entfernt und die StoryBoard-ID eingestelltDetailViewControllerDer Name der Klasse ist auchDetailViewController.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"DetailViewController"
                                                  bundle:nil];
    UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"DetailViewController"];

    NSMutableString *object = thisArray[indexPath.row];
    detailViewController.passedData = object;
    [self.navigationController pushViewController:detailViewController animated:YES];
}

aber es ist immer mit dem folgenden Fehler abgestürzt:

*** App wird aufgrund einer nicht erfassten Ausnahme beendetNSInvalidArgumentException, Grund: 'Konnte kein Storyboard mit dem Namen findenDetailViewController im Bundle

Antworten auf die Frage(1)

Ihre Antwort auf die Frage